可能的重复: 哪个键代码的转义键与jQuery
如何检测IE, Firefox和Chrome中的escape键? 下面的代码在IE中工作,并提醒27,但在Firefox中它提醒0
$('body').keypress(function(e){
alert(e.which);
if(e.which == 27){
// Close my modal window
}
});
可能的重复: 哪个键代码的转义键与jQuery
如何检测IE, Firefox和Chrome中的escape键? 下面的代码在IE中工作,并提醒27,但在Firefox中它提醒0
$('body').keypress(function(e){
alert(e.which);
if(e.which == 27){
// Close my modal window
}
});
当前回答
纯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')
}
}
});
其他回答
纯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')
}
}
});
使用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.');
}
});
在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
}
});
下面的代码不仅禁用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);