如何使用纯JS或jQuery检测转义键按下?

可能重复:
jQuery的哪个键代码用于转义键

如何在IE,Firefox和Chrome中检测逃逸键按下?下面的代码在IE和警报中有效27,但在Firefox中它会警报0

$('body').keypress(function(e){
    alert(e.which);
    if(e.which == 27){
        // Close my modal window
    }
});
TonyPro2020/03/12 16:49:24

检查keyCode&& whichkeyup||keydown

$(document).keydown(function(e){
   var code = e.keyCode || e.which;
   alert(code);
});
乐米亚2020/03/12 16:49:24

我认为最简单的方法是香草javascript:

document.onkeyup = function(event) {
   if (event.key === 27){
     //do something here
   }
}
神无老丝Davaid2020/03/12 16:49:24

keydown事件将对Escape正常运行,并具有允许您keyCode在所有浏览器中使用的优势另外,您需要将侦听器附加到document主体上而不是附加到主体上。

2016年5月更新

keyCode现在正处于弃用过程中,大多数现代浏览器key现在都提供该属性,尽管您现在仍需要回退以提供良好的浏览器支持(在撰写本文时,Chrome和Safari的当前版本不支持它)。

evt.key所有现代浏览器现在都支持2018年9月更新

document.onkeydown = function(evt) {
    evt = evt || window.event;
    var isEscape = false;
    if ("key" in evt) {
        isEscape = (evt.key === "Escape" || evt.key === "Esc");
    } else {
        isEscape = (evt.keyCode === 27);
    }
    if (isEscape) {
        alert("Escape");
    }
};
Click me then press the Escape key

Itachi理查德2020/03/12 16:49:24

注:keyCode越来越过时的使用key来代替。

function keyPress (e) {
    if(e.key === "Escape") {
        // write your logic here.
    }
}

这是jsfiddle


keyCode 被弃用

看起来keydownkeyup工作,即使keypress可能没有


$(document).keyup(function(e) {
     if (e.key === "Escape") { // escape key maps to keycode `27`
        // <DO YOUR WORK HERE>
    }
});

jQuery的哪个转义键的键代码