按键允许数字,但不允许在iPhone上移动符号
Keydown allowing numbers but not shift symbols on iPhone
我有一个绑定到只允许数字的输入的事件。 简化:
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
仍然是错误的。
有多种可能的解决方案是我可以接受的:
- 让虚拟键盘本身不显示这些字符(即只显示数字和句点/小数)
- 检测是否按下了无效的虚拟键并禁止事件行为
- 确定将无效字符添加到输入的值中,并在这种情况下禁止事件行为
- 别人?
您可以使用
<input type="tel" />
将输入限制为iOS中的数字 - 尽管这也允许键入"*"和"#",但至少工作量更少,因为您只需要检查这两个字符
相关文章:
- Don'不允许将焦点集中在自动完成的选择上
- 覆盖在赢得'不允许点击下面的标记,谷歌地图api v3
- js文件未加载js控制台say's”;不允许加载本地资源”;
- Jquery不允许来自多个选择列表的相同值
- 飞行前响应中的访问控制允许标头不允许Angularjs请求标头字段访问控制允许标题
- 不允许在文本框中使用小数
- TinyMCE全屏不允许出现模式窗口
- 不允许在字段中输入不需要的字符
- 访问控制允许标头不允许X-Requested-Wise
- Chromium内联样式不允许正确的视图
- JQuery代码语法问题?(“不允许内联控制结构”)
- 正则表达式,不允许在javascript中使用负数和小数以及零
- 不允许输入或聚焦的输入类型文本
- $interval不允许我更新前端
- 不允许使用引导清单'组件'指令
- XMLHttpRequest无法加载url Origin访问控制允许Origin不允许null
- 正则表达式允许字母数字和空格,但不允许连续两个空格
- 谷歌地图 - 用户选择不允许位置
- 按键允许数字,但不允许在iPhone上移动符号
- 为什么iPhone不允许在html元素的背景中自动播放视频