在检察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
则是输入流被体系处置惩罚后发作的。