Javascript IE11中出现数字输入类型验证错误,可能是纯JS解决方案?

Javascript IE11中出现数字输入类型验证错误,可能是纯JS解决方案?,javascript,html,internet-explorer-11,Javascript,Html,Internet Explorer 11,IE11中数字输入类型的验证已完全中断,ValidityState对象将始终具有valid:true、patternmatch:false等 令人恼火的是,它确实发挥了预期作用的一个方面是,如果输入文本,则将值设置为null(尽管它将为前面带有数字的文本指定一个值),因此我无法使用JS进行验证 因此,我不知道如何在输入值时检查输入验证。我能想到的唯一解决方案是针对keydown事件进行验证,但这不仅是一个相当多的额外麻烦,它不包括边缘情况,比如有人将文本粘贴到输入中 在我放弃之前,有人有其他的建

IE11中数字输入类型的验证已完全中断,
ValidityState
对象将始终具有
valid:true
patternmatch:false

令人恼火的是,它确实发挥了预期作用的一个方面是,如果输入文本,则将值设置为null(尽管它将为前面带有数字的文本指定一个值),因此我无法使用JS进行验证

因此,我不知道如何在输入值时检查输入验证。我能想到的唯一解决方案是针对
keydown
事件进行验证,但这不仅是一个相当多的额外麻烦,它不包括边缘情况,比如有人将文本粘贴到输入中

在我放弃之前,有人有其他的建议吗?请不要使用jQuery,只使用纯JS

编辑:我已经在使用
input
事件。我的问题是IE没有将无效条目分配给输入的
属性-因此,我无法在具有无效条目的输入和仅为空的输入之间进行检查。

使用而不是
按键

窗口上输入事件的事件处理程序。元素值更改时引发输入事件

这件事有泡泡。如果在窗口上受支持,则在元素上也受支持


这意味着当用户键入、粘贴内容或模糊字段时,它会触发。

使用
输入事件,并将
novalidate
属性添加到表单中,这将禁用浏览器验证:

var counter=document.getElementById('changes');
var计数=0;
document.getElementById('input').addEventListener('input',function(){
counterEl.innerHTML=count++;
});


这是我已经在使用的,但是如果输入无效,则输入的值将保留为null,因此我无法区分无效输入和空输入。我已经在使用输入事件;问题是,如果输入了无效字符,输入值将保留为空,因此无法区分无效输入和无输入。@chrBrd您可以使用
novalidate
,在我的回答中添加了这一点,这是一个很好的建议,可能在很多情况下都可以使用。不过,更让人恼火的是,我验证的这一部分是在输入输入时完成的,而不是在提交输入时完成的。很遗憾,这也行不通。再一次,我考虑过,但这意味着失去数字输入类型的箭头和键盘功能。我只是想跳过IE中输入的验证。。。