2010-12-07 9 views
2

J'ai une boîte de dialogue HTML à supprimer lorsque la touche d'échappement est enfoncée. J'ai un champ de fichier dans la boîte de dialogue HTML. Si un utilisateur utilise la boîte de dialogue de fichier système pour sélectionner un fichier pour le champ de fichier dans la boîte de dialogue HTML et appuie sur échappement, cet événement ferme la boîte de dialogue système et transmet également l'événement clé d'échappement au navigateur. Je veux que la boîte de dialogue HTML reste ouverte et ne souhaite pas que cet événement frappe le navigateur.L'appui sur la touche Echap de la boîte de dialogue Ouvrir un fichier déclenche une touche JavaScript. Appuyez sur

Comment puis-je résoudre ce problème?

Plus d'informations: Ce comportement est dans Firefox.

+0

Pour les futurs visiteurs, [cette question] (http://stackoverflow.com/questions/11647113/detecting-if-the-file-input-dialog-is-open) avait la réponse qui a fonctionné pour moi. –

Répondre

1

Si vous utilisez la boîte de dialogue jQuery UI, vous pouvez vérifier la clé d'évacuation en cas beforeClose et utiliser e.preventDefault pour l'empêcher de fermeture:

$(".selector").dialog({ 
    beforeClose: function(event, ui) { 
       if(event.keyCode == 27) { 
        alert("Esc key tried to close the dialog"); 
        event.preventDefault(); 
       } else { 
        alert("You used something other than the escape key to close the dialog."); 
       } 
    } 
}); 

Seul inconvénient est que si vous voulez permet de fermer la boîte de dialogue avec la touche d'échappement lorsque la boîte de dialogue du fichier système n'est PAS ouverte, cela empêchera cela de fonctionner.

Questions connexes