gpt4 book ai didi

javascript - event.preventDefault() 在 Android 的按键事件中不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 09:08:37 24 4
gpt4 key购买 nike

大多数 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”被放入该字段。等等。无论先前输入的字符是什么,都会将其放入字段中。

Here's a jsFiddle that demonstrates the issue.

fiddle 在桌面上运行良好,但在 Android(手机或模拟器)上试试。我已经使用 Android 2.3.6 和 2.2 进行了测试。

有人遇到过这个吗?任何方向将不胜感激!目前,解决方法是在之后立即删除非数字字符(在 keyup 事件中)。

更新: Here is a fiddle这表明正在达到 preventDefault()。问题似乎在于它不是在阻止,而是在延迟(直到下一个事件)。

最佳答案

一个完全不同的方法是使用 <input type="number">并依靠浏览器提供适当的界面/过滤(移动浏览器很容易)。它不修复代码,但应该绕过问题,老实说,这看起来像一个错误。

关于javascript - event.preventDefault() 在 Android 的按键事件中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10002450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com