使用jQuery捕获“删除”按键


118

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

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

似乎必须有一种方法来捕获Delete密钥,但这是一个模棱两可的术语,因此Google并没有提供太多帮助。

Answers:


202

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


keyup会做得更好。
localhoost

2
@atilkan不,用户希望获得有关的反馈keydown,而不是keyup。所有文本编辑器都在按下某个按键时执行操作,而不是在释放按键时执行操作。
菲利普·莱巴特

1
@PhilippeLeybaert就我而言,程序无法捕获最后按下的字符。
localhoost


34

Javascript键码

  • e.keyCode == 8backspace
  • e.keyCode == 46用于PC的forward backspacedelete按钮

除此之外,Colin&Tod的答案还在起作用。


4
应该是e.keyCode而不是e.KeyCode
Jerome

16

event.key ===“删除”

最近更新,更清洁:使用event.key。没有更多的任意数字代码!

注意:旧的属性(.keyCode.which)已弃用。

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

Mozilla文件

支持的浏览器

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.