在查看js event时看到这三个事件,随手Google
了一下,和自己之前理解的有些出入,记录下来以方便后期需要时查询。
一、msdn上关于三者的说明
onkeydown
这个事件在用户按下任何键盘键(包括系统按钮,如箭头键和功能键)时发生。
onkeypress
这个事件在用户按下并放开任何字母数字键时发生。系统按钮(例如,箭头键和功能键)无法得到识别。
onkeyup
这个事件在用户放开任何先前按下的键盘键时发生.
二、区别
关于执行顺序
测试发现
onkeydown
事件最先执行,其次是onkeypress
,最后是onkeyup
;onkeydown
和onkeypress
会影响onkeyup
的执行。三个事件同事在的话,都是alert
的话,只会弹出2个alert
,up
事件的alert
不会弹出。
关于事件响应
onkeydown
、onkeypress
事件响应的时候输入的字符并没有被系统接受,而响应onkeyup
的时候,输入流已经被系统接受。
onkeydown
触发的时候输入流正要进入系统,也就是说onkeydown
事件一完,输入流就进入了系统,无法改变。所以通过onkeydown
事件可以改变用户是按了哪个键;而onkeypress
事件则是在输入流进入系统后触发的,但输入流暂未被系统处理,此时已经不能改变输入流了;onkeyup
则是输入流被系统处理后发生的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。