可能的重复:
使用 jQuery 转义键的键码
如何在 IE、Firefox 和 Chrome 中检测转义键按下?下面的代码适用于 IE 和警报27
,但在 Firefox 中它会发出警报0
$('body').keypress(function(e){
alert(e.which);
if(e.which == 27){
// Close my modal window
}
});
可能的重复:
使用 jQuery 转义键的键码
如何在 IE、Firefox 和 Chrome 中检测转义键按下?下面的代码适用于 IE 和警报27
,但在 Firefox 中它会发出警报0
$('body').keypress(function(e){
alert(e.which);
if(e.which == 27){
// Close my modal window
}
});
注意:keyCode
正在被弃用,请key
改用。
function keyPress (e) {
if(e.key === "Escape") {
// write your logic here.
}
}
代码片段:
keyCode
正在被弃用
它似乎
keydown
和keyup
工作,即使keypress
可能不
$(document).keyup(function(e) {
if (e.key === "Escape") { // escape key maps to keycode `27`
// <DO YOUR WORK HERE>
}
});
该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
使用JavaScript,您可以检查工作jsfiddle
document.onkeydown = function(evt) {
evt = evt || window.event;
if (evt.keyCode == 27) {
alert('Esc key pressed.');
}
};
jQuery(document).on('keyup',function(evt) {
if (evt.keyCode == 27) {
alert('Esc key pressed.');
}
});
检查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);