2

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

此功能的大部分依赖于我能够处理 keyPress 事件、抑制默认行为并替代特殊操作这一事实。

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

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

拦截这些密钥有什么技巧吗?

4

1 回答 1

8

您需要将 onkeydown 用于非字符键。IE 中的 onkeypress 只处理返回字符串的键。

要专门引用 MSDN 文档:

从 Microsoft Internet Explorer 4.0 开始,onkeypress 事件触发并且可以为以下键取消:

  • 字母:A - Z(大写和小写)
  • 数字:0 - 9
  • 符号:!@ # $ % ^ & * ( ) _ - + = < [ ] { } , . / ? \ | ' ` " ~
  • 系统:ESC、空格键、ENTER
于 2009-06-25T13:33:22.790 回答