首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在IE11中安装了数字输入类型验证,可能是纯JS解决方案吗?

问在IE11中安装了数字输入类型验证,可能是纯JS解决方案吗?
EN

Stack Overflow用户
提问于 2017-01-25 20:28:48
回答 2查看 451关注 0票数 2

IE11中数字输入类型的验证完全失败-- ValidityState对象总是有valid: true、patternMismatch: false等。

令人恼火的是,如果输入了文本,那么它确实起一定作用的一个区域是将值设置为null (尽管它会将值赋值给前面有数字的文本),因此我无法通过使用JS进行验证。

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

在我放弃之前还有谁有其他建议吗?不需要jQuery,纯JS。

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

EN

回答 2

Stack Overflow用户

发布于 2017-01-25 20:53:24

使用input事件,并将novalidate属性添加到表单中,从而禁用浏览器验证:

​

代码语言:javascript
复制
var counterEl = document.getElementById('changes');
var count = 0;

document.getElementById('input').addEventListener('input', function() {
  counterEl.innerHTML = count++;
});
代码语言:javascript
复制
<form novalidate>
    <input type="text" id="input"/>
    <span id="changes"></span>
</form>

​

或者,您可以使用change事件,它不会经常触发。

票数 1
EN

Stack Overflow用户

发布于 2017-01-25 20:47:59

使用onInput而不是keydown

窗口上输入事件的事件处理程序。当元素值更改时,将引发输入事件。 这件事泡汤了。如果窗口支持它,元素也支持它。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41861086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档