2010-11-23 26 views
3

J'ai une liste déroulante sur ma page Web avec un événement jquery attaché à l'événement de changement. En cas de changement, j'utilise ajax pour charger une vue partielle dans une fenêtre contextuelle.Comment prévenir événement jquery tirer sur une liste déroulante donné un événement est attaché

Lorsque l'utilisateur utilise le clavier pour naviguer dans la liste des éléments mais clique alors un lien sur une autre partie de la page que je vois un instant ma fenêtre pop-up. Cela se produit évidemment lorsque l'utilisateur clique sur un lien ailleurs sur la page, l'événement change est déclenché sur le menu déroulant en premier.

Y a-t-il des solutions claires pour résoudre ce problème? Une solution simple consisterait à déclencher l'événement au démarrage, mais je ne souhaite pas que cette fonctionnalité se produise.

est ici l'extrait d'événement de modification du Code

$('#lookup').change(function() 
{ 
    $.get(..//load template 

Répondre

0

N'a pas trouvé une solution que je l'ai aimé ou travaillé propre avec mon style donc décidé de prendre déclencheur sur les deux événements « changement » et « KeyUp » afin d'éviter ce scénario.

0

L'événement n'a pas pu être arrêté parce que l'événement de changement est tiré dans tous les cas. Une possibilité pourrait être de définir un certain délai entre l'événement déclenché et l'appel réel de la méthode $ .get afin de prendre en compte votre cas, mais ce n'est certainement pas une solution élégante.

Sinon, vous pouvez appeler la fonction de retour que si un certain autre élément obtient le focus (par exemple, s'il y a une zone de texte, après votre liste déroulante).

Je ne voudrais pas trop parler car il semble que votre pop-up doit être indiquée sur le changement Dropdown. Si ce n'est pas critique, vous pouvez avoir un bouton d'aide sur la droite de la liste déroulante qui popsup votre fenêtre sur le clic du bouton.

0

Je suis un peu confus par votre question. Mais en supposant que le "changement" n'est pas un vrai changement, je pense que vous pourriez garder une variable pour "lastSelected" et, quand un changement se produit, vérifiez-le par rapport à cela. Si c'est la même chose, ignorez-le. Si c'est différent, lancez votre requête Ajax et mettez à jour la valeur de "lastSelected".

1

Si son un appel ajax, il y a de chances que votre appel ajax se cache. Assurez-vous de désactiver le cache. quelque chose comme "cache: false"

+0

Je ne vois pas comment cela se rapporte à la question. –