keydown keyup keypress

键盘事件的触发过程具体是这样的: 在用户按下键盘上的一个字符键时,
首先会触发keydown事件,然后是keypress事件,最后是keyup事件。
其中,keydown和keypress事件是在文本框发生变化之前 被触发;而keyup在文本框发生变化之后被触发。
如果用户按下一个键不放,就会重复触发keydown和keypress事件。
在用户按下一个非字符键时,首先触发keydown事件,然后就是keyup事件。
如果用户按下一个键不放,就会重复触发keydown。

在英文输入法下,所有浏览器都遵循以下三个事件:

keydown: 当用户按下任意键时触发,而且按住不放的话,会重复触发此事件。
keypress: 当用户按下字符键时触发,而且按住不放的话,会重复触发此事件。按下Esc键也会触发这个事件,Safari3.1之前的版本按下非字符键时也触发。
keyup: 当用户释放键时触发。

在中文输入法下,浏览器之间则表现得不一致,主要情况如下:

IE,Chrome,Safari:触发keydown和keyup, 不触发keypress。
Firefox:首次按下按键时触发keydown,不触发keypress。在停止输入法并改变文本框内容(如按下回车或者空格键)后会触发keyup。
Opera:keydown, keypress和keyup都不触发。
PS : 只有在触发keyup事件才能获得修改后的文本值。
  所有元素都支持以上三个事件,一般情况下只有在文本框时才经常用到

sunbaixin wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!