停止IE11从输入类型编号中删除文本

hch*_*rge 8 html internet-explorer-11

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

<input type="number" min="1" max="12" pattern="[0-9]*" >
Run Code Online (Sandbox Code Playgroud)

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

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

示例图像

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

JSFiddle演示.

Jam*_*lly 3

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

<input type="number" value="aaa" />
Run Code Online (Sandbox Code Playgroud)
<input type="number" value="aaa" />
Run Code Online (Sandbox Code Playgroud)

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

如果您需要在元素中接受非数字数据,input那么解决方案非常简单,将元素更改type为“文本”而不​​是“数字”,并仅依靠您自己的 JavaScript 验证方法来处理验证(因为看起来您想要反正)。

<input type="text" >
Run Code Online (Sandbox Code Playgroud)

您还可以随时使用 JavaScript 来确定用户是否正在移动设备上查看您的网站并type动态更改属性。

另一种解决方案是通知用户,如果元素模糊且不存在任何文本(在 IE 自动删除之后),则该字段必须是数字,但这在SE 的 UserExperience 站点上会得到更好的讨论。