IE11中数字输入类型的验证完全失败-- ValidityState对象总是有valid: true、patternMismatch: false等。
令人恼火的是,如果输入了文本,那么它确实起一定作用的一个区域是将值设置为null (尽管它会将值赋值给前面有数字的文本),因此我无法通过使用JS进行验证。
因此,我不知道如何在输入值时检查输入验证。我能想到的唯一解决方案是针对keydown事件进行验证,但不仅仅是额外的麻烦,它不包括边缘情况,比如将文本粘贴到输入中的人。
在我放弃之前还有谁有其他建议吗?不需要jQuery,纯JS。
编辑:,我已经在使用input事件了。我遇到的问题是IE没有将无效条目分配给输入的value属性-因此,我无法在输入项无效的输入和空输入之间进行检查。
发布于 2017-01-25 20:53:24
使用input事件,并将novalidate属性添加到表单中,从而禁用浏览器验证:
var counterEl = document.getElementById('changes');
var count = 0;
document.getElementById('input').addEventListener('input', function() {
counterEl.innerHTML = count++;
});<form novalidate>
<input type="text" id="input"/>
<span id="changes"></span>
</form>
或者,您可以使用change事件,它不会经常触发。
发布于 2017-01-25 20:47:59
https://stackoverflow.com/questions/41861086
复制相似问题