Question

J'utilise le widget de dialogue jquery pour afficher une boîte modale. Cependant lorsque vous appuyez sur F5, tandis que le modal est ouvert sans rafraîchissement se produit. Toute idée?

Mise à jour intéressant:

Essayer cette démo: http://jqueryui.com/demos/dialog/#modal- un message Maintenant, quand l'accent est mis sur le bouton « ok », le rafraîchissement (F5) fonctionne, mais lorsque le bouton n'a pas la mise au point, il ne fonctionne pas.

Mise à jour 2

On peut en fait juste ajouter tout type de contrôle à la boîte de dialogue, régler la hauteur et la largeur à 0 et mettre l'css accent sur elle pour obtenir le rafraîchissement de travail. Ce n'est pas la meilleure solution si. J'essaie toujours de faire fonctionner correctement keypress.

Mise à jour 3

Ce qui suit semble fonctionner pour l'instant:

$(document).keydown(function(e)
{
    if (e.which == 116) // key code of the F5 button
    {
        document.location.reload();
     }
}); 
Était-ce utile?

La solution

Cela semble être un problème commun et je n'ai pas vu une réponse satisfaisante. Il y a quelques questions similaires sur Stack Overflow et la meilleure réponse que je l'ai vu est de capturer les clés et déclencher l'action vous-même (ce qui a été pour entrer dans le déclenchement d'un bouton, afin de rafraîchir f5 pourrait être plus difficile) Je l'ai vu moi-même dans un projet que je travaille trop.

Je pense que la mise en modal false pourrait aider, mais je ne l'ai pas encore essayé.

Edit:

J'ai trouvé sur la ligne 539 de ui.dialog.js:

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

Retrait de la keydown et keypress de là semblait que les clés du navigateur normal de travailler. Maintenant, le mien ressemble à ceci:

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

Je ne sais pas quelle fonctionnalité je l'aurais retiré en faisant cela. Les événements semblent seul endroit à utiliser est en ligne 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);
});

Il serait bien d'obtenir que ce soit réglé dans la version officielle si possible.

Autres conseils

est la boîte de dialogue diabling la touche F5 en capturant l'événement KeyPress et arrêter sa propagation pour le « F5 »?

Vérifiez le code pour la capture keypress de ce genre. Cela expliquerait beaucoup!

J'ai eu des problèmes similaires, mais découvert que j'avais mis dans un « return false; », qui arrêtait toutes les autres clés étant enregistrées. Par exemple, le « return false » ci-dessous arrêtera toutes les autres touches (comme F5) étant reconnu, sauf xxx et yyy.

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

Il suffit donc de prendre le "return false".

La solution est facile, il vous suffit de mettre l'accent sur un élément de forme de votre boîte de dialogue modale. Plus sur cette :

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top