Skip to content

键盘与输入事件

键盘事件

1. 键盘事件
事件说明
keydown用户按下键盘某个键时触发,而且持续按住会重复触发
keypress用户按下键盘某个键并产生字符时触发,而且持续按住会重复触发,ESC 也可以触发
DOM 3 废弃,推荐使用 textInput 事件
keyup用户释放键盘上某个键时触发
2. 键码

对于 keydownkeyup 事件,event 上有一个 keyCode 属性,保存键码

  • 对于字母和数字键,keyCode 对应小写字母和数字的 ASCII
  • 对于非字符键
键码键码
BackSpace8数字键盘 8104
Tab9数字键盘 9105
Clear12数字键盘 +107
Enter13数字键盘 -109
Shift16数字键盘 .110
Control17数字键盘 /111
Alt18F1112
Cape Lock20F2113
Esc27F3114
Spacebar32F4115
Page Up33F5116
Page Down34F6117
End35F7118
Home36F8119
左箭头37F9120
上箭头38F10121
右箭头39F11122
下箭头40F12123
Insert45Num Lock144
Delete46Scroll Lock145
左 window91分号(IE、Safari、Chrome)186
右 window92分号(Opera、FF)59
Context Menu93,<188
数字键盘 096.>190
数字键盘 197/?191
数字键盘 298/?191
数字键盘 399`~192
数字键盘 4100=+61
数字键盘 5101[{219
数字键盘 6102\ |220
数字键盘 7103]}221
'"222
3. charCode
  • 按键字符对应的 ASCII 编码
  • 可以使用 String.fromCharCode() 转化为实际的字符
4. 修饰键

键盘上的修饰键 ShiftCtrlAltMeta 经常用于修改鼠标事件行为

可以获取以下几个修饰键状态,true 为按下,false 为没按下:

  • shiftKeyctrlKeyaltKeymetaKey

输入事件

事件说明
textInput在字符被输入到可编辑区域时触发
1. 与 keypress 的不同
  • keypress 可在任何有焦点元素上触发,而 textInput 只可以在可编辑区域上触发
  • keypress 可在影响文本时触发(包括退格键),而 textInput 只有在新字符被插入时才出发
2. 获取输入字符
  • event 上有一个 data 可获取要插入的字符
  • 区分大小写,按 s 时为 s,按 shift + s 时为 S
3. 获取输入文本的手段
  • event 上有一个 inputMethod 可获取输入文本的手段
手段
0浏览器不能确定是什么手段
1键盘
2黏贴
3拖放操作
4IME
5表单选项
6手写
7语音
8组合方式
9脚本