按下ESC键执行onclick事件

14
简单来说,我的问题是我想通过一行Javascript代码执行Esc按钮的效果,例如执行一个Esc按钮的onclick效果。我该如何做?我的情况是,在jQuery盒子中上传文件,因此当上传完成后,希望自动执行退出功能以关闭盒子。

这个库声称可以触发关键事件。http://jupiterjs.com/news/syn-a-standalone-synthetic-event-library 它说你只需要调用:Syn.type('[escape]'); - Ruan Mendes
1
有没有一种方法可以调用来关闭对话框? - Ruan Mendes
@HAMZA,您能告诉我们所选答案如何帮助您吗?对我来说,这个问题肯定是关于“模拟按键”(特别是esc键),而@Nathan的答案是为了捕获esc键,因此需要用户手动输入。被接受的答案应该是@Juan的答案。要么就是OP完全问错了问题! - bPratik
如果您看到我在被接受的答案下面的评论,那个答案可能行不通,因为它依赖于其他代码监听escapeKeyPressed事件。我相信OP只是想知道如何关闭对话框,Nathan的评论($('#myDialog').trigger('dialogClose'))向OP展示了如何做到这一点。 - Ruan Mendes
我认为你的回答被转化了,因为从技术上讲它并没有解决问题,更多地是提出了正确方向的建议。这只是我的猜测! - bPratik
显示剩余3条评论
2个回答

19

我知道这是一个老问题。然而,如果有人在搜索中着陆到这里,这可能会有所帮助:

首先,在所需的元素(或文档)上触发事件,

$('a[name=close]').click(function(){
    var e = jQuery.Event("keyup"); // or keypress/keydown
    e.keyCode = 27; // for Esc
    $(document).trigger(e); // trigger it on document
});

然后,在文档上添加一个keyup监听器:

// Esc key action
$(document).keyup(function(e) {
    if (e.keyCode == 27) { // Esc
        window.close(); // or whatever you want
    }
});

2
这段代码对我有效。
$(document).keyup(function(e) {     
    if(e.keyCode== 27) {
        alert('Esc key is press');  
    } 
});

4
这是检测按键,而非模拟按键。 - Anonymous

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