使用jQuery捕获"删除"Keypress

Sha*_*e H 111 jquery keypress

当使用jQuery文档中的示例代码来生成keypress事件处理程序时,我无法捕获Delete密钥.在FireFox中按下键0时,下面的代码段会记录Delete:

$(document).keypress(function(e) {
    console.log(e.which);       
});
Run Code Online (Sandbox Code Playgroud)

似乎必须有一种方法来捕捉Delete密钥,但这是一个含糊不清的术语,因此谷歌并没有证明对它有很大的帮助.

Phi*_*ert 191

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

  • @atilkan 不,用户期望对`keydown` 的反馈,而不是`keyup`。所有文本编辑器都在按下某个键时执行操作,而不是在松开时执行操作。 (2认同)
  • @PhilippeLeybaert 在我的情况下,程序无法捕获最后按下的字符。 (2认同)

小智 79

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

来源:javascript char代码来自www.cambiaresearch.com的密码

  • 它应该是`alert('Delete Key Released')`. (18认同)
  • 正如另一个答案中指出的那样,“.keyCode”已被弃用。 (2认同)

cso*_*maz 32

Javascript密钥代码

  • e.keyCode == 8 forbackspace
  • e.keyCode == 46 for PC中的forward backspacedelete按钮

除了这个细节,科林和托德的答案正在发挥作用.

  • 它应该是**e.keyCode**而不是e.KeyCode (4认同)

Gib*_*olt 10

event.key ==="删除"

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

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

Mozilla文档

支持的浏览器