使用.keydown
时我可以捕获keydown事件,然后检查并阻止默认操作(显示字符)。
使用.keyup
时,我不能?
我知道当代码处于条件内时alert()
会触发事件,但preventDefault()
不会阻止此操作。
这是一个完整的DEMO
答案 0 :(得分:14)
在keyup
事件中,字符已被输入且无法撤消,但在keydown
中没有输入任何内容且浏览器有意图来输入字符,所以你可以取消浏览器意图。
每当您输入字符时,都会发生以下事件:
keydown
- >(keypress
- >(输入操作))重复发生,直到密钥被释放 - > keyup
keydown
- >可以预防 - >在以下情况下解雇:按键keypress
- >可以预防 - >在以下情况下解雇:按住键keyup
- > 不可以阻止 - >在以下情况下被解雇:释放一把钥匙答案 1 :(得分:0)
当键被击中时会触发keydown()
事件,这意味着可以在释放键之前执行代码。
当按下该键时,代码可以阻止某个操作,因为它还没有发生,而在keyup()
事件中,它已经有了。
e.g。触发keyup()
通常,keydown和keyup生成相同的密钥代码(与给定事件一起使用时) 但是按键会给你按下的物理键(返回ASCII代码而不是keyCode)