html - 停止 IE11 从输入类型数字中删除文本

标签 html internet-explorer-11

在 Internet Explorer 11 中,如果您有以下内容:

<input type="number" min="1" max="12" pattern="[0-9]*" >

当用户尝试输入字母而不是数字时,浏览器只会清除输入。这种行为是不可取的,因为我希望我们的验证来处理这个,而不是浏览器自动为我做这件事。

有人知道如何改变这种行为吗?

Example Image

我使用数字输入类型进行验证并在 iOS 中获得正确的键盘。

JSFiddle demo .

最佳答案

其他浏览器可能会保留此文本,但是在 type 属性设置为“number”的 input 元素中输入“aaa”将意味着您的元素的 value 属性为空,因此您的验证方法很可能会将其视为缺少内容而不是非数字值。

<input type="number" value="aaa" />
console.log(document.querySelector('input').value);
> ""

我已经更改了您的 JSFiddle 演示以反射(reflect)这一点:http://jsfiddle.net/e1132tg5/3/ .

如果您需要在 input 元素中接受非数字数据,那么解决方案非常简单,只需将元素的 type 更改为“text”而不是“number”并完全依赖您自己的 JavaScript 验证方法来处理验证(无论如何看起来您都想要)。

<input type="text" >

您始终也可以使用 JavaScript 来确定用户是否在移动设备上查看您的网站,并动态更改 type 属性。

另一种解决方案是,如果元素模糊且没有文本(在 IE 自动删除后),则通知用户该字段必须是数字,但这最好在 SE's UserExperience site 上讨论。 .

关于html - 停止 IE11 从输入类型数字中删除文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26255260/

相关文章:

javascript - 在 Javascript 或 jQuery 中,如何检测字符串开头的空格?

javascript - 如何使用onmouseover?

html - 如何为同一类获得相同大小的按钮和 href?

html - IE11 flexbox 容器不增长

html - IE 11 和 IE Edge 获取文件类型失败

javascript - JavaScript-新的Audio()在IE11和Edge上的Window 10 N上抛出 “Not implemented”

html - 居中行内 block 保持文本左对齐

javascript - 如何捕获输入到 HTML 表单字段中的数据?

javascript - IE11 F12 调试器未附加

html - 第 n 个():before compatibility with Edge and Safari