Question:项目开发中有个需求,需要在当前页中实现键盘全控制(当前有个input输入框)
- 中文输入法 键码值229
此事件中刚开始使用keyCode键码值进行控制,不涉及input的时候一切都还可以。
而当焦点在input中的时候,英文输入法的啥情况下keyCode一切都好,但是当按shift切换成中文输入法的时候,数字键+字母键(大部分键)的键码值都成了229。等于说当焦点在input框中且为中文输入法的时候,利用keyCode控制相应键就无效了。
- 空格键默认效果
而且测试过程中发现,当焦点在input框中按下“空格键”的时候会有空格,当点击过按钮之后立刻按“空格键”会有默认点击的效果,这两个默认行为可以通过 event.preventDefault() 来阻止。
- 利用e.code代替e.keyCode
如果想用在中文输入法的情况下仍然控制事件的话就不能用keyCode了,可以使用e.code来控制,每个键的code值在中英文输入法情况下都是一个固定的值
- 其他键的情况
Tab键切换页面焦点
- input框中有些键的默认事件
Caps lock 键——切换为字母大写
Shift 键——中英文切换
Alt 键——使i