为什么我可以在keydown上阻止默认事件但不能在使用Javascript的keyup上阻止?
使用.keydown
我可以捕获keydown事件,然后检查并阻止默认操作(显示字符)。
使用.keyup
我不能?
我知道事件被捕获为alert()
当代码在条件内时触发但preventDefault()
不会阻止该操作。
这是一个完整的DEMO
在keyup
事件中,字符已被键入且无法撤消,但在keydown
没有输入任何内容且浏览器有意输入字符,因此您可以取消浏览器意图。
无论何时键入字符,都会发生以下事件:
keydown
– >( keypress
– >(输入操作))反复发生,直到释放密钥 – > keyup
-
keydown
– >可以防止 – >解雇时: 按一个键 -
keypress
– >可以防止 – >触发时: 按住键 -
keyup
– > 无法阻止 – >解雇时: 释放一个键
命中键时会触发keydown()
事件,这意味着可以在释放键之前执行代码。
当按下键时代码可以阻止一个动作,因为它还没有发生,而在keyup()
事件中它已经有了。
例如,当触发keyup()
时,一个字符已被插入到输入字段中
通常,keydown和keyup生成相同的密钥代码(当与给定事件一起使用时)但是keypress会给你按下的物理密钥(返回的是ASCII代码而不是keyCode)