Pregunta

Estoy utilizando el widget de diálogo jQuery para mostrar un cuadro modal. Sin embargo cuando se pulsa F5, mientras que el modal está abierta ninguna actualización ocurre. Alguna idea?

Actualizar Interesante:

Probar demo: http://jqueryui.com/demos/dialog/#modal- mensaje Ahora, cuando la atención se centra en el botón "OK", entonces la actualización (F5) funciona, sin embargo, cuando el botón no tiene el enfoque y luego no lo hace.

Actualización 2

Podemos en realidad sólo tiene que añadir ningún tipo de control al cuadro de diálogo, establecer la altura y la anchura de 0 css y establecer el foco en él para obtener la actualización de trabajo. Esta no es la mejor solución sin embargo. Todavía estoy tratando de conseguir trabajo pulsación de tecla.

Actualización 3

El siguiente parece que funciona por ahora:

$(document).keydown(function(e)
{
    if (e.which == 116) // key code of the F5 button
    {
        document.location.reload();
     }
}); 
¿Fue útil?

Solución

Esto parece ser un problema común y no he visto una respuesta satisfactoria. Hay algunas preguntas similares sobre desbordamiento de pila y la mejor respuesta que he visto es capturar las teclas y desencadenar la acción a sí mismo (esto fue para entrar en la activación de un botón, por lo F5 para actualizar podría ser más difícil) lo he visto a mí mismo en un proyecto que estoy trabajando demasiado.

Sospecho que la fijación de modal para falsa podría ayudar, pero no he probado todavía.

Editar:

He encontrado esto en la línea 539 de ui.dialog.js:

events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),

Extracción de la pulsación de tecla keydown y desde allí parecía permitir teclas normales del navegador para trabajar. Ahora la mina se parece a esto:

events: $.map('focus,mousedown,mouseup,click'.split(','),

No sé qué funcionalidad que habría eliminado al hacer esto. El único lugar acontecimientos parecen ser utilizados en la línea 549 es:

$(document).bind($.ui.dialog.overlay.events, function(event) {
    var dialogZ = $(event.target).parents('.ui-dialog').css('zIndex') || 0;
    return (dialogZ > $.ui.dialog.overlay.maxZ);
});

Sería bueno para conseguir esto fijada en la versión oficial, si es posible.

Otros consejos

es el cuadro de diálogo es deshabilitar la tecla F5 al capturar el evento de pulsación de tecla y detener su propagación para el 'F5'?

Compruebe el código de pulsación de teclas para las capturas de este tipo. Esto explicaría mucho!

He tenido problemas similares, pero descubrí que había puesto en un "return false;", que se detienen todas las demás teclas están registrando. Por ejemplo, el "return false" a continuación se detendrá todas las demás teclas (como F5) ser reconocido excepto xxx e yyy.

$(document).keydown(function(e){
if (e.keyCode == xxx) {/*do something*/}
if (e.keyCode == yyy) {/*do something*/}
return false;
});

Así que sacar el "return false".

La solución es fácil, sólo tiene que centrarse en un elemento de forma de su cuadro de diálogo modal. Más explicación sobre este enlace :

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top