按下打开文件对话框上的Escape键会触发JavaScript按键事件。

3
我有一个HTML对话框,设置为在按下Esc键时自动关闭。我在HTML对话框中有一个文件字段。如果用户正在使用系统文件对话框为HTML对话框中的文件字段选择文件,并按下Esc键,则该事件会关闭系统对话框并将Esc键事件传递给浏览器,从而也关闭HTML对话框。我希望HTML对话框保持打开状态,并且不希望该事件影响浏览器。
如何解决此问题?
更多信息:此行为出现在Firefox中。

2
对于将来的访问者,这个问题给出的答案对我有用。 - Jamie Niemasik
当用户点击文件选择输入时,给它焦点:$(el).focus()。然后,每当用户按ESC键时,检查$(':focus')元素是否为文件选择输入。在这种情况下,模糊该输入并不要关闭模态框。 - Avatar
1个回答

1
如果您正在使用jQuery UI对话框,您可以在beforeClose事件中检查escape键,并使用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.");  
                 }
   }
});

唯一的缺点是,如果您想在系统文件对话框未打开时允许使用Esc键关闭对话框,则这将阻止该功能的正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接