【发布时间】:2020-10-08 04:20:07
【问题描述】:
在我的表单中,我想使用新的 HTML5 表单类型,例如 <input type="url" /> (more info about the types here)。
问题是 Chrome 想为我提供超级有用的帮助并验证这些元素,但它很烂。如果它未能通过内置验证,则除了元素获得焦点之外没有任何消息或指示。我用 "http://" 预填充 URL 元素,因此我自己的自定义验证只是将这些值视为空字符串,但 Chrome 拒绝了。如果我可以更改其验证规则,那也可以。
我知道我可以恢复使用type="text",但我希望使用这些新类型提供更好的增强功能(例如:它会自动切换到移动设备上的自定义键盘布局):
那么,有没有办法关闭或自定义自动验证?
【问题讨论】:
-
HTML 5.1 草案规范提到了一个
inputmodeattribute,如果我理解我的理解正确的话,它可以用来指定当用户与字段,没有也暗示任何验证规则。在未来的某个时候,使用inputmode属性而不是type属性可能是解决这个问题的正确方法——但目前还不是。 -
@MarkAmery 虽然现在获得未来不会太难:
$('[inputmode]').each(function () { this.attr({type: this.attr('inputmode'), novalidate: true}) }); -
@MarnenLaibow-Koser 虽然你所描述的工作如果你想做的只是关闭验证(如提问者所指定),它并不能达到与@相同的结果987654333@ 会。按照你的方式做事,你仍然不能(例如)读取用户在
number类型的输入框中键入的非数字值。例如,尝试在this fiddle 的文本框中输入一些非数字的内容,然后单击按钮。 -
@MarkAmery 很有趣。那是因为
<input type='number'>根本不接受非数字值吗? -
@MarnenLaibow-Koser 我想是的。 this question 上关于该问题的已接受答案包括指向规范的链接,回答者声称强制执行此行为。
标签: validation forms html input