Keydown允许在iPhone上使用数字而不是移位符号

时间:2013-11-13 20:52:16

标签: javascript jquery html ios html5

我有一个事件绑定到一个只允许数字的输入。简化为:

function (e) {
    if (-1 === [48,49,50,51,52,53,54,55,56,57].indexOf(e.keyCode)) {
        e.preventDefault();
    }
}

这样可行,但如果有人输入 @ $ 等, keyCode仍然相同,并且不会阻止事件默认值。

在物理键盘上,我可以通过检查e.shiftKey来简单地防止这种情况。但是,在iOS 虚拟键盘上,即使对于$,也存在其中一些字符(例如<input type=number>),并且可以直接键入它们。他们的keyCode是相同的,但似乎e.shiftKey仍然是假的。

我可以接受各种可能的解决方案:

  • 让虚拟键盘本身显示这些字符(即只显示数字和句点/小数)
  • 检测到按下了无效的虚拟键并禁止事件行为
  • 确定将无效字符添加到输入值并在此情况下抑制事件行为
  • 其他?

1 个答案:

答案 0 :(得分:0)

你可以使用<input type="tel" />来限制iOS中数字的输入 - 虽然这也允许键入'*'和'#',至少它的工作量少,因为你只需要检查那两个字符