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

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

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

当前回答

检查keyCode && which & keyup || keydown

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

其他回答

检查keyCode && which & keyup || keydown

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

下面的代码不仅禁用ESC键,而且还检查按下的条件,根据情况,它将执行或不执行该操作。

在这个例子中,

e.preventDefault();

将禁用ESC键按动作。

你可以用这个来隐藏一个div:

document.getElementById('myDivId').style.display = 'none';

同时考虑按下ESC键的情况:

(e.target.nodeName=='BODY')

你可以删除这个if条件部分,如果你想把它应用到所有。或者你可以在这里设置INPUT,只在光标在输入框中时应用此操作。

window.addEventListener('keydown', function(e){
    if((e.key=='Escape'||e.key=='Esc'||e.keyCode==27) && (e.target.nodeName=='BODY')){
        e.preventDefault();
        return false;
    }
}, true);

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

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

纯JS(没有JQuery)

document.addEventListener('keydown', function(e) {
    if(e.keyCode == 27){
      //add your code here
    }
});

使用JavaScript你可以检查工作的jsfiddle

document.onkeydown = function(evt) {
    evt = evt || window.event;
    if (evt.keyCode == 27) {
        alert('Esc key pressed.');
    }
};

使用jQuery可以检查工作的jsfiddle

jQuery(document).on('keyup',function(evt) {
    if (evt.keyCode == 27) {
       alert('Esc key pressed.');
    }
});