大多数 Web 开发人员都知道,要将数字限制为表单输入,您可以执行以下操作:
$(function() {
$("#foobar").keypress(function(e) {
if($.inArray(e.which, range(48, 57)) == -1) {
e.preventDefault();
return false;
}
});
});
function range(start, end) {
var range = [];
for(var i = start; i <= end; i++) {
range.push(i);
}
return range;
}
不幸的是,这并不能在使用默认浏览器的 Android 上完成工作。(iPhone 和其他 Android 浏览器尚未经过测试,因此它们可能会遇到同样的问题。在没有此问题的 iPhone 4S 上进行了测试。)
在 Android 上,假设您首先输入“f”。没发生什么事。惊人的。等一下。然后键入“a”。发生什么了?“f”被放入输入字段!您键入“c”,“a”被放入该字段。等等。无论先前输入的字符是什么,这就是输入该字段的内容。
小提琴在桌面上工作正常,但在 Android(手机或模拟器)上试试。我已经使用 Android 2.3.6 和 2.2 进行了测试。
有人遇到过这个吗?任何方向将不胜感激!目前,解决方法是立即删除非数字字符(在keyup
事件中)。
更新: 这是一个显示正在达到的小提琴。preventDefault()
问题似乎是,而不是阻止,它只是延迟(直到下一个事件)。