在 Internet Explorer 11 中,如果您有以下情况:
<input type="number" min="1" max="12" pattern="[0-9]*" >
当用户尝试输入字母而不是数字时,浏览器只会清除输入。这种行为是不可取的,因为我希望我们的验证来处理这个问题,而不是浏览器自动为我做这件事。
有人知道如何改变这种行为吗?
我使用数字输入类型进行验证,并在 iOS 中获取正确的键盘。
JSFiddle 演示 http://jsfiddle.net/hcharge/e1132tg5/1/.
其他浏览器可能会保留此文本,但在浏览器中输入“aaa”input
元素,其type
属性设置为“number”将意味着您的元素的value
属性为空,因此您的验证方法很可能会将其视为缺少内容而不是非数字值。
<input type="number" value="aaa" />
console.log(document.querySelector('input').value);
> ""
我修改了您的 JSFiddle 演示以反映这一点:http://jsfiddle.net/e1132tg5/3/ http://jsfiddle.net/e1132tg5/3/.
如果您需要接受非数字数据input
元素那么解决方案很简单,改变你的元素type
改为“文本”而不是“数字”,并仅依靠您自己的 JavaScript 验证方法来处理验证(正如您所希望的那样)。
<input type="text" >
您还可以随时使用 JavaScript 来确定用户是否正在移动设备上查看您的网站并更改type
动态属性。
另一种解决方案是通知用户,如果元素模糊且不存在任何文本(在 IE 自动删除之后),则该字段必须是数字,但这在SE 的用户体验网站 http://ux.stackexchange.com.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)