用 jQuery 捕获“删除”键盘

当使用 jQuery 文档中的示例代码作为 keypress 事件处理程序时,我无法捕获 Delete键。下面的代码片段将在 FireFox 中按下 Delete键时记录 0:

$(document).keypress(function(e) {
console.log(e.which);
});

似乎有一种方法可以捕获 Delete密钥,但这是一个模棱两可的术语,所以谷歌并没有证明对此有多大帮助。

154561 次浏览

您不应该使用 keypress事件,而应该使用 keyupkeydown事件,因为 keypress事件用于真正的(可打印的)字符。keydown在较低的级别处理,因此它将捕获所有非打印键,如 deleteenter

$('html').keyup(function(e){
if(e.keyCode == 46) {
alert('Delete key released');
}
});

来源: 美国广播公司 www.cambiaresearch.com

Javascript 密码

  • E.keyCode = = 8 for backspace
  • 在电脑的 forward backspacedelete按钮中,e.keyCode = = 46

除了科林和托德回答的这个细节起作用了。

Key = = = “ Delete”

更新和更干净: 使用 event.key。没有更多的任意数字代码!

注意: 不推荐使用旧属性(.keyCode.which)。

document.addEventListener('keydown', function(event) {
const key = event.key; // const {key} = event; ES6+
if (key === "Delete") {
// Do things
}
});

Mozilla 文档

支援的浏览器

可以使用 jQuery 跟踪 delete/backspace 键,如下所示:

 $(document).keyup(function(e){
if(e.key === "Backspace") {
alert('Delete key/ backspace');
}
});