Javascript/Jquery -检测按键,除非文件选择对话框显示
Javascript/Jquery - Detect keypress except when file select dialog is showing
我有一个模态框覆盖,用户可以在其中编辑一些信息。关闭这个叠加的方法之一是按ESC键。我对这个工作没有问题。但是,在这个模态框中有一个用于上传文件的部分。当用户选择文件时,如果用户按ESC,则关闭"选择文件"对话框,但随后该按键也被我的"模态框关闭"脚本检测到。我确实有一个确认对话框来询问用户是否确定他们想要关闭这个框,但我仍然不希望这个动作被触发,如果他们只是试图关闭'file select'对话框。
这里最好的方法是什么?是否有一种方法来确定浏览器的焦点是否在"文件选择"对话框与实际页面的一部分?
更新:前三个答案基本上是一样的,而且答案很简单,我都不好意思问了。谢谢你的帮助。通常我会接受一个答案,但由于这三个是相同的,我真的不知道如何选择一个最喜欢的。我想我就选一个吧。不过,这并不影响另外两个的可接受性。谢谢大家。
这里最好的方法是什么?有办法确定吗浏览器的焦点是否在"文件选择"对话框上实际页面的?
为什么把它弄得那么复杂,你有能力识别用户是否点击了"选择文件"按钮,所以你可以设置一个标志变量,并在他们点击这个按钮时将其设置为true。
然后你的keydown/keyup事件可以检查标志并相应地处理场景。
编辑:示例代码:
var SelectFileCode = {
IsSelectingFile: false,
Click: function() {
this.IsSelectingFile = true;
//do stuff here to open dialog
},
KeyDown: function(event) {
if (this.IsSelectingFile && event.which == 27) //pressed ESC
//don't close modal, just close select dialog
}
};
$(function() {
$('.selectBtn').click(SelectFileCode.Click);
$('.modal').keydown(SelectFileCode.KeyDown);
});
您需要确保适当地重置IsSelectingFile
,但这将是一般的方法。
设置对话框打开时的标志变量为true。当对话框关闭时,将其更改为false。
您可以在按下browse for file按钮时设置一个变量(标志)。之后在关闭模态框的地方,只需检查标志,如果它是on,就不要关闭该框。
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- java,javascript签名的小程序(文件选择,ftp上传)安全性/套接字异常
- 输入类型=“;文件“;onclick有效,但文件选择不显示
- 选择同一文件时未触发HTML输入文件选择事件
- 多个文件选择
- 当您选择不同的视图时,Google文件选择器示例会中断,例如google.picker.ViewId.DOCS
- JavaScript/HTML5音频:在Android Chrome中播放用户通过文件选择器加载的mp3文件
- 如何将文件选择器添加到angularjs模板中
- Angular文件上传插件:文件选择在Firefox中无法正常工作
- 从其他位置触发文件选择窗口
- IE8或IE9-支持多文件选择上传,无需Flash和HTML5
- 在windows8中,将“从文件选择器中拾取的文件”定义为Listview数据源
- 文件选择/文件API-将文件发送到嵌入式PDFObject
- 显示从文件选择器中选择的图像的图像缩略图
- 此api版本不支持onedrive文件选择器aadsts70001应用程序
- 在聚焦文本输入时触发文件选择
- Phonegap:解析从本机文件选择器获取 content:// URI
- HTML / JavaScript文件选择检查
- 如何在jquery中传递文件选择事件
- j查询文件选择与超链接