在jQuery中偶然发现了一些奇怪的东西,同时编写了一些验证码 - 我有一个html5“数字”字段;
<input type="number" class="required numeric" />
然后,我的脚本将查看页面上的每个字段,检查类并根据需要进行验证。我奇怪地注意到,如果我在我的一个数字字段中输入“X”,我会得到一个“请在此字段中输入一个值”错误,而不是“这应该是一个数字”错误。经过一些头脑刮擦和大量调试后,我敲了一个jsFiddle来演示我的理论 - 如果你在一个数字字段中输入一个字符,然后尝试从jquery做一个.val()它会返回任何内容 - 好像字段是空的(我在Chrome中遇到过这种情况 - 不确定它是否在所有浏览器中都能正常工作);
http://jsfiddle.net/shawson/SE46L/3/
这是小提琴 - 输入一些数字,然后几个字母来看疯狂。任何人都知道这是否是设计的,如果是的话......为什么?
答案 0 :(得分:9)
这不是jQuery问题。如果使用本机element.value(例如使用getElementByID('something')。value),您将得到相同的结果。这是Chrome如何处理输入类型=数字的怪癖,您可以选择使用type = text和pattern属性来解决它。
有关更多背景信息,请参阅this older question。
答案 1 :(得分:1)
在Chrome中遇到同样的问题,当它们是非数字时,不会给type = number赋值。我投入的工作是简单地将值设置为自身的值。这样它就不会让你输入非数字值。这是一个黑客,但它的工作原理。
例如:
$('body').find('input[type="number"]').each(function(k,v) {
$(this).on('keyup blur', function() {
$(this).val($(this).val());
});
});