IE11中数字输入类型的验证完全被破坏 - args->DrawingSession->DrawCircle(640, 360, 30.0f, Colors::Blue);
对象将始终具有ValidityState
,valid: true
等。
令人恼火的是,如果输入文本的话,将其设置为null的一个区域就是将其设置为null(虽然它会为前面带有数字的文本赋值),所以我无法通过使用JS来检查它。
因此,我不知道在输入值时如何检查输入验证。我能想到的唯一解决方案是对patternMismatch: false
事件进行验证,但这不仅仅是一个额外的麻烦,它不包括像将文本粘贴到输入中的边缘情况。
在我放弃之前,有没有人有任何其他建议?没有jQuery,只有纯JS。
修改:我已使用keydown
事件。我遇到的问题是IE没有为输入的input
属性分配无效的条目 - 因此我无法检查带有无效条目的输入和只有空条目的输入。
答案 0 :(得分:1)
使用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
事件,该事件不会经常触发。
答案 1 :(得分:0)