此问题涉及仅允许在输入文本字段中输入数字字符。我需要做同样的事情,除了必须允许负号和小数。该解决方案还需要在 Mobile Safari 中运行,适用于iOS 6和iOS 7。
我已经测试了基于在 keyup 事件处理程序中检查键码的公认解决方案,但该解决方案在我的iPad上不起作用,因为它允许输入以下字符:
()$&@!
以下代码基于此解决方案:
('input.numeric').keyup(function(e) {
this.value = (this.value.replace(/[^0-9.\,-]/g, ''));
});
尽管此代码在我测试过的桌面浏览器(例如 Chrome)中运行良好,但在Mobile Safari上似乎运行不佳。在iOS 5上,这确实允许输入数字字符和减号,但它会导致光标位置出现奇怪的行为,光标通常出现在输入的字符之前。在iOS 6上,由于某种原因,这不允许输入减号,只能输入数字字符。
有没有人有一个可以在Mobile Safari上正常工作的解决方案。我在这里寻找一种纯 Javascript 解决方案,或者只依赖于jQuery的解决方案。请不要回答“使用这个或那个库”或评论Javascript验证不安全。