7
votes

Actualiser (F5) ne fonctionne pas dans la boîte de dialogue JQuery

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

Mise à jour intéressante: strong> p>

Essayez cette démo: http://jqueryui.com/demos/dialog/#modal-message Maintenant, lorsque la mise au point est sur le bouton "OK", l'actualisation (F5) fonctionne, cependant, lorsque le bouton n'a pas la mise au point, il ne le fait pas. P>

Mise à jour 2 Strong> P>

Nous pouvons simplement ajouter tout type de contrôle à la boîte de dialogue, définissez la hauteur et la largeur sur 0 CSS et définissez la mise au point pour obtenir l'actualisation de l'actualisation. Ce n'est pas la meilleure solution cependant. J'essaie toujours d'obtenir la clé KeyPress. P>

Mise à jour 3 forte> p>

Ce qui suit semble fonctionner pour l'instant: P>

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


4 Réponses :


0
votes

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

Vérifiez le code des captures de KeyPress de ce type. Cela expliquerait beaucoup!


0 commentaires

6
votes

Cela semble être un problème courant et je n'ai pas vu de réponse satisfaisante. Il y a quelques questions similaires sur le débordement de pile et la meilleure réponse que j'ai vue est de capturer les touches et de déclencher l'action vous-même (ceci était pour entrer en déclenchant un bouton, de sorte que F5 à rafraîchir pourrait être plus difficile) Je l'ai vu moi-même un projet que je travaille aussi.

Je soupçonne que le réglage modal à False pourrait aider, mais je n'ai pas encore essayé. P>

EDIT: H3>

J'ai trouvé cela sur Ligne 539 de UI.Dialog.js: p>

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


4 commentaires

Ce n'est qu'un problème sur le site de démonstration avec la démo modale, bien que ce n'est pas vraiment une solution.


J'essaie d'utiliser dlg1.bind ('KeyPress', fonction (e) {...}); Cependant, cela ne semble rien faire. Des idées?


Je prévois de jeter un coup d'œil à travers le code et de voir si je peux trouver une solution de contournement bientôt depuis que nous sommes touchés par le même problème.


Merci d'avoir ajouté le correctif David.



0
votes

J'ai eu des problèmes similaires, mais j'ai découvert que j'avais mis dans un "retour faux;", qui empêchait toutes les autres clés enregistrées. Par exemple, le "retour false" ci-dessous arrêtera toutes les autres clés (telles que F5) étant reconnues, à l'exception de XXX et AAAA.

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


0 commentaires