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

如何检测IE, Firefox和Chrome中的escape键? 下面的代码在IE中工作,并提醒27,但在Firefox中它提醒0

$('body').keypress(function(e){
    alert(e.which);
    if(e.which == 27){
        // Close my modal window
    }
});

当前回答

在Firefox 78上使用这个("keypress"对Escape键不起作用):

function keyPress (e)(){
  if (e.key == "Escape"){
     //do something here      
  }
document.addEventListener("keyup", keyPress);

其他回答

纯JS

您可以为文档的keyUp事件附加一个监听器。

此外,如果你想确保,任何其他键没有按下Esc键,你可以使用ctrlKey, altKey和shifkey的值。

 document.addEventListener('keydown', (event) => {
        
        if (event.key === 'Escape') {
         //if esc key was not pressed in combination with ctrl or alt or shift
            const isNotCombinedKey = !(event.ctrlKey || event.altKey || event.shiftKey);
            if (isNotCombinedKey) {
                console.log('Escape key was pressed with out any group keys')
              
            }
        }
    });

在Firefox 78上使用这个("keypress"对Escape键不起作用):

function keyPress (e)(){
  if (e.key == "Escape"){
     //do something here      
  }
document.addEventListener("keyup", keyPress);

检查keyCode && which & keyup || keydown

$(document).keydown(function(e){
   var code = e.keyCode || e.which;
   alert(code);
});

注意:keyCode已弃用,请使用key代替。

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

代码片段:

var msg = document.getElementById('state-msg'); document.body。addEventListener('keypress',函数(e) { if (e.key == "Escape") { 味精。textContent += 'Escape pressed:' } }); 按ESC键<span id="state-msg"></span> . /span . > . /span . > . /span . > . /span . > . /span


keyCode已弃用

按下键和按上键似乎都有用,尽管按下键可能不行


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

哪个键代码的转义键与jQuery

keydown事件可以很好地用于Escape,并允许您在所有浏览器中使用keyCode。此外,您需要将侦听器附加到文档而不是正文。

2016年5月更新

keyCode现在正处于被弃用的过程中,大多数现代浏览器现在都提供了key属性,尽管你仍然需要一个合适的浏览器支持(在编写当前版本的Chrome和Safari不支持它)。

2018年9月更新 evt。Key现在被所有现代浏览器所支持。

文档。Onkeydown =函数(evt) { window.event = Evt ||; var isEscape = false; If(“key”in evt) { isEscape = (evt。key === "Escape" || evt。key === "Esc"); }其他{ isEscape = (evt。keyCode === 27); } if (isEscape) { 警报(“逃脱”); } }; 点击我,然后按退出键