我正在构建一个专门用于输入和编辑时间的文本输入字段。该功能的一部分要求通过各种方式来关注时间的不同组成部分(小时、分钟、秒),我通过文本选择来指示这些部分。可以用鼠标直接选择,效果很好。另一个功能是键盘导航。

大多数此功能都依赖于我能够处理 keyPress 事件、抑制默认行为并代之以特殊操作这一事实。

在 Firefox 中,我可以很好地工作。用户可以使用左/右箭头键或 tab/shift-tab 在部分时间之间移动(当他们到达终点时,下一个 tab 键将离开该字段并正常聚焦下一个元素)。

在 Internet Explorer 7(可能是其他版本?)中,箭头键和制表符甚至不会被按键处理程序接收。如果按下箭头键,则文本选择丢失,光标移动一位。提供多个字段的效果消失了,导致控制感觉被破坏。 Tab 似乎也跳过了处理程序并立即翻转到下一个可聚焦元素。

拦截这些 key 有什么技巧吗?

请您参考如下方法:

非字符键需要使用onkeydown。 IE 中的 onkeypress 仅处理返回字符串的键。

具体引用MSDN文档:

As of Microsoft Internet Explorer 4.0, the onkeypress event fires and can be canceled for the following keys:

  • Letters: A - Z (uppercase and lowercase)
  • Numerals: 0 - 9
  • Symbols: ! @ # $ % ^ & * ( ) _ - + = < [ ] { } , . / ? \ | ' ` " ~
  • System: ESC, SPACEBAR, ENTER


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!