可能的重复: 哪个键代码的转义键与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
}
});
当前回答
使用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.');
}
});
其他回答
检查keyCode && which & keyup || keydown
$(document).keydown(function(e){
var code = e.keyCode || e.which;
alert(code);
});
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) { 警报(“逃脱”); } }; 点击我,然后按退出键
纯JS(没有JQuery)
document.addEventListener('keydown', function(e) {
if(e.keyCode == 27){
//add your code here
}
});
纯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')
}
}
});
最好的方法是为它构造函数
功能:
$.fn.escape = function (callback) {
return this.each(function () {
$(document).on("keydown", this, function (e) {
var keycode = ((typeof e.keyCode !='undefined' && e.keyCode) ? e.keyCode : e.which);
if (keycode === 27) {
callback.call(this, e);
};
});
});
};
例子:
$("#my-div").escape(function () {
alert('Escape!');
})