我正在构建专门用于输入和编辑时间的文本输入字段。功能的一个部分需要各种方式来关注时间的不同组成部分(小时,分钟,秒),我通过文本选择指出。使用鼠标可以直接选择,这很有效。另一个功能是键盘导航。
大多数此功能依赖于我能够处理keyPress事件,抑制默认行为并替换特殊操作的事实。
在Firefox中,我的工作非常好。用户可以使用左/右箭头键或tab / shift-tab在部分时间内移动(当它们到达结尾时,下一个tab键将离开该字段并正常聚焦下一个元素。)
在Internet Explorer 7(可能是其他人?)中,按键处理程序甚至都没有收到箭头键和标签。如果按下箭头键,则文本选择将丢失,光标将移动1。提供多个字段的效果消失,导致控制感破裂。 Tab似乎也跳过了处理程序,只是立即翻转到下一个可聚焦元素。
拦截这些钥匙有什么技巧吗?
答案 0 :(得分:7)
您需要将onkeydown用于非字符键。 IE中的onkeypress只处理返回字符串的键。
具体引用MSDN文档:
自Microsoft Internet Explorer 4.0起, onkeypress事件可能会发生 取消以下键:
- 字母:A - Z(大写和小写)
- 数字:0 - 9
- 符号:! @#$%^& *()_ - + =< [] {} ,. /? \ | '`“〜
- 系统:ESC,SPACEBAR,ENTER