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?
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> 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 :
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»? P>
Vérifiez le code des captures de KeyPress de ce type. Cela expliquerait beaucoup! P>
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>
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);
});
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.
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;
});
solution est facile, il vous suffit de vous concentrer sur un élément de formulaire de votre boîte de dialogue modale. Plus d'explication sur ce Link : P>
Je vois le même problème sur le site de démonstration: jQueryui.com/demos/dialog/#modalle_/a >
Je n'aime pas votre mise à jour 3. C'est une solution de contournement, mais pas une excellente. La cartographie JS des clés non alpha est notoirement mauvaise pour le navigateur croisé, et il peut y avoir des personnes ou des navigateurs qui assignent F5 pour autre chose. Cela ne fait aussi rien pour les autres clés que l'interface utilisateur bloque. Je pense que c'est un bogue JQueryui et doit être rapporté comme tel. La meilleure solution consisterait à faire de l'interface utilisateur d'arrêter de prendre ces clés.
Je suis ce n'est pas le meilleur, cependant, dans notre cas, nous n'utilisons que IE et FF pour notre société intranet. Pour cette fin, cela fonctionne.