在打开文件对话框上按Escape键会触发JavaScript按键

时间:2010-12-07 19:10:10

标签: javascript jquery

我有一个HTML对话框设置为在按下转义键时自行删除。我在HTML对话框中有一个文件字段。如果用户正在使用系统文件对话框为HTML对话框中的文件字段选择文件并按下escape,则该事件将关闭系统对话框,并将转义键事件传递给浏览器,浏览器也会关闭HTML对话框。我希望HTML对话框保持打开状态,并且不希望该事件触及浏览器。

我该如何解决这个问题?

更多信息:此行为在Firefox中。

1 个答案:

答案 0 :(得分:1)

如果您正在使用jQuery uI对话框,则可以检查beforeClose事件中的转义键,并使用e.preventDefault来阻止它关闭:

$( ".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.");  
                 }
   }
});

唯一的缺点是,如果您希望在系统文件对话框未打开时允许使用转义键关闭对话框,这将阻止其工作。