Comment intercepter l’événement de touche ESC de jQuery Dialog?
J'ai modale jQuery dialogue et un autre élément qui prend la touche ESC qui sous-tend la boîte de dialogue. Lorsque le jQuery Dialogue est, je ne veux pas que cela touche ESC événement pour se propager. Ce qui se passe maintenant c'est que quand je clique sur la touche ECHAP, il va fermer la boîte de dialogue et de déclencher l'ESC gestionnaire d'événement sur l'arrière-plan de l'élément.
Comment puis-je manger de la touche ESC événement lorsqu'un jQuery boîte de dialogue fermée?
source d'informationauteur louis.luo
Vous devez vous connecter pour publier un commentaire.
Interne de jQuery UI dialog
closeOnEscape
option est mise en œuvre par la fixation d'un keydown auditeur au document lui-même. Par conséquent, la boîte de dialogue est fermée une fois l'événement keydown a fait tout le chemin vers le haut niveau.Donc, si vous souhaitez continuer à utiliser la touche échap pour fermer la boîte de dialogue, et vous voulez garder la touche escape de se propager dans les nœuds parents, vous aurez besoin de mettre en œuvre les
closeOnEscape
fonctionnalité vous-même ainsi que l'utilisation de lastopPropagation
méthode sur l'objet de l'événement (voir MDN article sur l'événement.stopPropagation).Ce que ce n'est écouter pour tous les événements keydown qui se produisent à l'intérieur de la boîte de dialogue. Si la touche pressée est la touche esc vous fermez la boîte de dialogue de la normale, et quel que soit le
evt.stopPropagation
appel maintient le keydown de remonter dans les nœuds parents.J'ai un exemple vivant montrant ici - http://jsfiddle.net/ud9KL/2/.
Vous avez besoin closeOnEscape...
Exemple de code:
Voir ça en live: http://jsfiddle.net/vutdV/
Vous pouvez utiliser les éléments suivants
Vous auriez besoin de modifier le code de votre élément à l'origine de la boîte de dialogue pour voir si le dialogue a été ouvert ET l'évasion touche a été pressée et à ignorer cette situation.