为什么我可以在keydown上阻止默认事件但不能在使用Javascript的keyup上阻止?

时间:2013-10-30 17:11:39

标签: javascript jquery

使用.keydown时我可以捕获keydown事件,然后检查并阻止默认操作(显示字符)。

使用.keyup时,我不能?

我知道当代码处于条件内时alert()会触发事件,但preventDefault()不会阻止此操作。

这是一个完整的DEMO

2 个答案:

答案 0 :(得分:14)

keyup事件中,字符已被输入且无法撤消,但在keydown中没有输入任何内容且浏览器有意图来输入字符,所以你可以取消浏览器意图。

每当您输入字符时,都会发生以下事件:
keydown - >(keypress - >(输入操作))重复发生,直到密钥被释放 - > keyup

  • keydown - >可以预防 - >在以下情况下解雇:
  • keypress - >可以预防 - >在以下情况下解雇:按住
  • keyup - > 可以阻止 - >在以下情况下被解雇:释放一把钥匙

答案 1 :(得分:0)

当键被击中时会触发keydown()事件,这意味着可以在释放键之前执行代码。

当按下该键时,代码可以阻止某个操作,因为它还没有发生,而在keyup()事件中,它已经有了。

e.g。触发keyup()

时,字符已插入输入字段

通常,keydown和keyup生成相同的密钥代码(与给定事件一起使用时) 但是按键会给你按下的物理键(返回ASCII代码而不是keyCode)