2009-11-19 3 views
1

J'ai défini un événement de mise au point sur un élément d'entrée. Quand il y a un focus, jQuery recherche un div et l'affiche. Ça marche. Avec l'événement de flou sur le même élément d'entrée, je fais masquer la div, ce qui fonctionne également. Mais quand je clique sur un lien ou que je veux sélectionner du texte dans le div affiché, il disparaît immédiatement à cause de l'événement de flou. Comment puis-je faire une exception pour le div montré?jQuery flou avec une exception

$("input.search-main-text").focus(function() { 
    $("div.quickResults").show(); 
}); 

$("input.search-main-text").blur(function() { 
    $("div.quickResults").hide(); 
}); 

Répondre

2
$("input.search-main-text").bind('focus', function() { 
    $("div.quickResults").show(); 
    $(document).bind('mousedown', function(e) { 
     if (! $(e.target).closest('div.quickResults').length) { 
      $("div.quickResults").hide(); 
      $(document).unbind('mousedown', arguments.callee); 
     } 
    }) 
}); 
1

Vous pouvez essayer de faire quelque chose comme:

  1. Bind le gestionnaire d'événements de mise au point
  2. On mise au point, lier le gestionnaire d'événements pour gestionnaire de flou + événement pour mouseenter le montre div
  3. Sur mouseenter sur la div affichée, dissocier l'événement de flou du champ de saisie
  4. Lors d'un événement de type mousel/autre sur le div affiché, reliez l'écouteur d'événement de flou au champ de saisie.
0

Sans plus d'informations, je ne peux pas vous dire grand-chose, juste que si je vous je vais essayer d'utiliser l'événement de changement sur l'élément d'entrée de texte plutôt que de se concentrer et flou. Si vous décrivez plus ce que vous essayez de mettre en œuvre, je pourrais être plus précis.