Pergunta

Eu estou usando o jQuery diálogo widget para exibir uma caixa de modal. No entanto, quando pressionando F5, enquanto o modal é aberta nenhuma atualização acontece. Alguma idéia?

Atualização interessante:

Tente esta demonstração: http://jqueryui.com/demos/dialog/#modal- mensagem Agora, quando o foco é sobre o botão "OK", então a atualização (F5) funciona, no entanto, quando o botão não tem o foco, então isso não acontece.

Update 2

Na verdade, podemos simplesmente adicionar qualquer tipo de controle para o diálogo, defina a altura ea largura de 0 css e definir o foco sobre ele para obter o trabalho de atualização. Esta não é a melhor embora solução. Eu ainda estou tentando obter trabalho tecla.

Update 3

A seguir parece funcionar para agora:

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

Solução

Este parece ser um problema comum e eu não vi uma resposta satisfatória. Há algumas perguntas semelhantes sobre estouro de pilha e a melhor resposta que eu vi é para capturar as chaves e disparar a ação a si mesmo (isso foi para entrar acionando um botão, então F5 para atualizar pode ser mais difícil) eu vi-me em um projeto que eu estou trabalhando muito.

Eu suspeito que modal configuração para false poderia ajudar, mas eu não tentei ainda.

Editar:

Eu encontrei este na linha 539 de ui.dialog.js:

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

Retirar o keydown e keypress de lá parecia para permitir que as teclas normais do navegador para o trabalho. Agora o meu parecido com este:

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

Eu não sei o que a funcionalidade eu teria removido fazendo isso. O único lugar os eventos parecem ser usado é na linha 549:

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

Seria bom para obter este corrigido na versão oficial, se possível.

Outras dicas

É a caixa de diálogo diabling a tecla F5, capturando o evento keypress e parar a sua propagação para o 'F5'?

Verifique o código para captura keypress deste tipo. Isso explicaria muito!

Eu tive problemas semelhantes, mas descobri que eu tinha colocado em um "falso retorno;", que foi parar todas as outras teclas sendo registrado. Por exemplo, a "falsa retorno" abaixo irá parar todas as outras chaves (como F5) sendo reconhecidos, exceto xxx e yyy.

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

Então, basta tirar o "falso retorno".

A solução é fácil, você só tem que se concentrar em um elemento de formulário da sua caixa de diálogo modal. Mais explicação sobre este ligação :

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top