我有一个输入type="number“的表单,这给我带来了IE11中的问题:有些值被接受,而另一些则没有,显然是随机的。
下面是代码:
<input type="number" style="text-align:right" min="1.00" placeholder="1,00" name="value-name" id="value" step="0.01" title="title" required/>出于某种原因,IE11接受9.2,9.4,9.5,9.6,9.7,9.9,但拒绝9.3和9.8。这只是一个例子,它发生在所有的数字,我不明白背后的原因。此外,一些数字在几分钟前就被接受了,但现在已经不是了。
此外,前面的所有值都不应该有效,因为我在欧洲,,是十进制部分的分隔符,而不是.。相反,当我使用,时,IE不会将其转换为.,并且当通过POST传递给PHP时,PHP的is_numeric()返回false!
我怎么才能把这一切都做好?谢谢
发布于 2017-06-20 11:30:25
我通过接受.和,作为小数除数来修正这个问题。
我将属性formnovalidate lang="en"添加到表单输入中,并通过Javascript执行表单验证,代码如下:
function validateForm(minValue) {
var number = document.getElementById("value").value.replace(",",".");
if(number != "") {
var isNaNres = isNaN(parseFloat(number));
var isFiniteRes = isFinite(number);
if (!isNaNres && isFiniteRes && number >= minValue && number.match("^[0-9]+(\.[0-9]{1,2})?$"))
return true;
}
alert("<Error message>");
return false;
}需要正则表达式匹配以保证该数字在小数点后的最高位数为2位。
https://stackoverflow.com/questions/44642249
复制相似问题