IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Fermer un div quand je clique dans le vide JS


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Fermer un div quand je clique dans le vide JS
    Bonjour,
    dans le cadre d'un moteur de recherche style facebook en ajax je rencontre un problème , une fois le mot clé est tapé les résultats sont bien la , mon div s'affiche , mais quand je clique dans le vide il reste toujours visible.
    j'ai pu régler la moitié du problème en rajoutant cette condition pour le fermer si le champ est vide .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ... 
    if(searchbox=='') 
    { 
    document.getElementById('display').style.display='none'; 
    } 
    else 
    { 
    ...

    et cela fonction. maintenant je veux fermer le div "display" quand je clique dans le vide (ailleurs sur l'écran) tout le problème est la je ne sais pas quoi mettre comme condition .
    merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    cliquer ailleurs => cliquer sur le body ...

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    bonjour spacefrog oui c'est ce que je voulais dire : n'importe ou ailleurs dans le body l'essentiel c'est qu'il se ferme dé qu'on fait un clique même dans le vide , voila j'espère que je me suis bien expliquer

  4. #4
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    window.body.onclick = function(e){
      var evt = window.event || e; 
      var target = evt.target || evt.srcElement; 
      var prevent = false;
      while( target && !prevent ){
        // id des éléments qui ne déclenche pas la fermeture
        if( target.id == "id_de_mon_input" || target.id == "id_de_mes_resultats" )
          prevent = true;
        target = target.parentNode;
      }
      // si le clique n'était pas sur un élémént de la recherhe, on cache l'élément
      if( !prevent ){
        document.getElementById('display').style.display='none';
      }
      // ne stop pas la propagation
      return true;
    }

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    bonsoir willpower merci d'avoir répondu, je vien de rajouter le code mais ça ne fonction toujours pas enfin il se ferme toujour pas voici mon code complet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    <script type="text/javascript">
    $(document).ready(function(){
    $(".search").keyup(function() 
    {
    var searchbox = $(this).val();
    var dataString = 'searchword='+ searchbox;
    if(searchbox=='')
    {
    document.getElementById('display').style.display='none';
    }
    else
    {
    $.ajax({
    type: "POST",
    url: "search_f_ajax.php",
    data: dataString,
    cache: false,
    success: function(html)
    {
    $("#display").html(html).show();	
    	}
    });
    }return false;    
    });
    });
     
    window.body.onclick = function(e){
      var evt = window.event || e; 
      var target = evt.target || evt.srcElement; 
      var prevent = false;
      while( target && !prevent ){
        // id des éléments qui ne déclenche pas la fermeture
        if( target.id == "searchbox" || target.id == "display_box" )
          prevent = true;
        target = target.parentNode;
      }
      // si le clique n'était pas sur un élémént de la recherhe, on cache l'élément
      if( !prevent ){
        document.getElementById('display').style.display='none';
      }
      // ne stop pas la propagation
      return true;
    }
    </script>	
    <!--//search-->
    //formulaire Html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <form action="../search_results.php" method="_POST">
    <input type="text" name="name_key" class="search no_abk" id="searchbox" />
    <input class="button_search" name="btnG" type="submit"  alt="{l_search}"  value="" />
    </form>
     
    //block des resultat en display:none
    <div id="display">
    <div class="display_box" align="left"> item resultat1</div>
    <div class="display_box" align="left"> item resultat2</div>
    ...
    </div>
    je veux juste fermer le div#display quand je clique dans le vide

    merci d'avance

  6. #6
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    autant pour moi, "window.body" n'existe pas, tu dois remplacer par "document.body.onclick".


    sinon vu que tu utilises déjà jQuery, voici la version jQuery :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $(document).click(function(evt){
     
    	var target = evt.target, prevent = false;
     
    	while( target && !prevent ){
    		// id des éléments qui ne déclenche pas la fermeture
    		if( target.id == "searchbox" || target.id == "display" )
    			prevent = true;
    		target = target.parentNode;
    	}
     
    	// si le clique n'était pas sur un élémént de la recherhe, on cache l'élément
    	if( !prevent ){
    		document.getElementById('display').style.display='none';
    	}
     
    	// ne stop pas la propagation
    	return true;
    });

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci Willpower tout est rentrer dans l'ordre ,cela fonction très bien merci encore

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    je reviens ver vous car mon problème est résolut mais une autre question se pose :
    cette fois quand je clique dans le vide l'input reste plein , je m'explique
    dans l'input je tapé par exemple : Bernard
    puis je change d'avi je clique donc ailleur dans le body , actuellement le '' Bernard est toujours conservé dans l'input ,
    en gros j'aimerai vidé le champ (input) ou même temps cacher le display cité en haut
    merci d'avance

  9. #9
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    dans le block possèdant la condition "if( !prevent )"

    tu rajoutes :

    $('#searchbox').val('');

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Mille fois merci Willpower
    problème résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lien clique dans le vide
    Par koKoTis dans le forum Général JavaScript
    Réponses: 54
    Dernier message: 18/07/2012, 18h11
  2. Fermer un DIV quand on clique en dehors
    Par poinball dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 19/01/2012, 16h25
  3. Réponses: 3
    Dernier message: 23/11/2009, 11h35
  4. Réponses: 8
    Dernier message: 02/04/2008, 17h30
  5. [DOM] Comment récupérer la valeur d'une ligne cliquée dans un <DIV>?
    Par insane_80 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/07/2007, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo