JavaScript键盘事件

键盘事件

在 JavaScript 中,当用户操作键盘时,会触发键盘事件,键盘事件主要包括下面 3 种类型:

  • keydown:在键盘上按下某个键时触发。如果按住某个键,会不断触发该事件,但是 Opera 浏览器不支持这种连续操作。该事件处理函数返回 false 时,会取消默认的动作(如输入的键盘字符,在 IE 和 Safari 浏览器下还会禁止keypress 事件响应)。
  • keypress:按下某个键盘键并释放时触发。如果按住某个键,会不断触发该事件。该事件处理函数返回 false 时,会取消默认的动作(如输入的键盘字符)。
  • keyup:释放某个键盘键时触发。该事件仅在松开键盘时触发一次,不是一个持续的响应状态。


当获取用户正按下键码时,可以使用 keydown、keypress 和 keyup 事件获取这些信息。其中 keydown 和 keypress 事件基本上是同义事件,它们的表现也完全一致,不过一些浏览器不允许使用 keypress 事件获取按键信息。所有元素都支持键盘事件,但键盘事件多被应用在表单输入中。

 

键盘事件属性

键盘定义了很多属性,如下表所示。利用这些属性可以精确控制键盘操作。键盘事件属性一般只在键盘相关事件发生时才会存在于事件对象中,但是 ctrlKey 和 shiftKey 属性除外,因为它们可以在水保事件中存在。例如,当按下 Ctrl 或Shift 键时单击鼠标操作。

 

键盘事件定义的属性
属性说明
keyCode 该属性包含键盘中对应键位的键值
charCode 该属性包含键盘中对应键位的 Unicode 编码,仅 DOM 支持
target 发生事件的节点(包含元素),仅 DOM 支持
srcElement 发生事件的元素,仅 IE 支持
shiftKey 是否按下 Shift 键,如果按下返回 true,否则为false
ctrlKey 是否按下 Ctrl 键,如果按下返回 true,否则为false
altKey 是否按下 Alt 键,如果按下返回 true,否则为false
metaKey 是否按下 Mtea 键,如果按下返回 true,否则为false,仅 DOM 支持

 

键盘响应顺序

当按下键盘时,会连续触发多个事件,它们将按如下顺序发生。

对于字符键来说,键盘事件的响应顺序:keydown → keypress → keyup。

对于非字符键(如功能键或特殊键)来说,键盘事件的相应顺序:keydown → keyup。

如果按下字符键不放,则 keydown 和 keypress 事件将逐个持续发生,直至松开按键。

如果按下非字符键不放,则只有 keydown 事件持续发生,直至松开按键。

posted on 2022-04-01 20:37  黎冬  阅读(442)  评论(0)    收藏  举报

导航