opción
Internamente de diálogo de jQuery UI closeOnEscape
se implementa mediante la fijación de un oyente keydown al propio documento . Por lo tanto, el cuadro de diálogo se cierra una vez que el evento de pulsación de teclas se ha borrado hasta llegar al nivel superior.
Así que si desea seguir usando la tecla de escape para cerrar el cuadro de diálogo, y desea evitar que la clave de escape se propague a los nodos principales, deberá implementar la funcionalidad closeOnEscape
usted mismo y utilizar el el método stopPropagation
en el objeto de evento (ver MDN article on event.stopPropagation).
(function() {
var dialog = $('whatever-selector-you-need')
.dialog()
.on('keydown', function(evt) {
if (evt.keyCode === $.ui.keyCode.ESCAPE) {
dialog.dialog('close');
}
evt.stopPropagation();
});
}());
Lo que hace es escuchar todos los eventos de pulsación que se producen dentro del cuadro de diálogo. Si la tecla presionada fue la tecla de escape, cierra el diálogo de la forma habitual, y no importa lo que ocurra con la llamada evt.stopPropagation
, la tecla de selección no se propagará hasta los nodos principales.
Tengo un ejemplo en vivo que muestra esto aquí - http://jsfiddle.net/ud9KL/2/.
Gracias. Esto funciona. –
esto no funciona, agregué una alerta simple en su jsfiddle dentro de la función de teclado y nunca se llama :( – Yasser
Desafortunadamente closeOnEscape no funciona para mí. Pero este enlace hizo el truco. –