Javascript HTML5有效性检查在IE中始终返回true
我试图使用HTML5有效性检查来确定字段内容是否确实有效。我有一个文本框字段,已设置为键入“number”。设置为“数字”的原因是当字段获得焦点时,在触摸设备上显示数字键盘 然而,我发现在Internet Explorer(IE10和IE11)中,无论字段中是否有数字或字母,有效性检查总是返回true 基本上,我希望实现的是能够使用有效性检查,然后调用我自己的自定义验证(我们有一个需要出现的自定义错误气泡,不能只使用浏览器开箱即用的错误气泡) 下面是一个JSFIDLE示例Javascript HTML5有效性检查在IE中始终返回true,javascript,html,Javascript,Html,我试图使用HTML5有效性检查来确定字段内容是否确实有效。我有一个文本框字段,已设置为键入“number”。设置为“数字”的原因是当字段获得焦点时,在触摸设备上显示数字键盘 然而,我发现在Internet Explorer(IE10和IE11)中,无论字段中是否有数字或字母,有效性检查总是返回true 基本上,我希望实现的是能够使用有效性检查,然后调用我自己的自定义验证(我们有一个需要出现的自定义错误气泡,不能只使用浏览器开箱即用的错误气泡) 下面是一个JSFIDLE示例 HTML5表单验证测
HTML5表单验证测试仪
结果:
var numberField=document.getElementById(“numberField”);
var r=document.getElementById(“结果”);
numberField.addEventListener(“输入”,函数(){
var值=numberField.value;
r、 innerHTML=
“
value=“+value+”,“+
“
checkValidity()=”+numberField.checkValidity()+”,“+
“
validity.valid=“+numberField.validity.valid;
});
每个浏览器中的行为如下所示:
铬:
Firefox: 和铬一样
即:
现在IE有了一些非常不同的行为。
示例1
正如您应该能够在每个浏览器的JSFIDLE示例中看到的那样,IE中根本不存在这种行为。有人知道为什么IE在有效性调用中总是返回true吗 或者,是否有其他方法可以调用触摸设备上的数字键盘,该设备可以跨浏览器和设备工作
请注意,我们无法使用JQuery库。这似乎是一个IE11错误,其中约束验证被破坏。如果您支持IE11,我认为您最好避免使用HTML5表单,而只使用JavaScript进行验证检查
IE9不支持checkValidity()。因此,您的预期结果是失败的。是的,但它似乎从IE10开始就受到支持。我们必须支持IE11。我和IE11有同样的问题,这让我发疯。找到解决办法了吗?不,对不起,我一直没能解决这个问题。
<h1>HTML5 Form Validation Tester</h1>
<form>
<input type="number" id="numberField" />
<br />
<h3>Result:</h3>
<div id="result"></div>
</form>
var numberField = document.getElementById("numberField");
var r = document.getElementById("result");
numberField.addEventListener("input", function() {
var value = numberField.value;
r.innerHTML =
"<br />value=" + value + ", " +
"<br />checkValidity()=" + numberField.checkValidity() + ", " +
"<br />validity.valid=" + numberField.validity.valid;
});