CSS 输入 :invalid incorrectly applied

标签 css html validation

我有这个 fiddle :

http://jsfiddle.net/rkTCq/

代码只是一个带有模式的数字类型的输入字段

pattern="[0-9]+(\.[0-9]+)?"

如果输入无效,CSS 会添加一个红色边框:

input:invalid { border:1px solid red; }

但是,如果我键入 1.3 然后用 Tab 键退出该字段,我会得到一个红色边框,尽管根据模式这是正确的。这里有什么问题?

PS:这是在 safari 中。

编辑:好的,我添加了 step="any",这似乎解决了这个问题。大家可以确认一下吗?

http://jsfiddle.net/rkTCq/2/

最佳答案

您已将输入定义为 type=number。如本文所述,必须使用 step 属性明确允许 float 才能正确验证。

https://blog.isotoma.com/2012/03/html5-input-typenumber-and-decimalsfloats-in-chrome/

在您的输入中添加一个步骤属性:step="any":

<input type="number" name="quantity" class="form-control" placeholder="Quantity" tabindex="2" step="any">

此外,根据 MDN pattern 不适用于 number 类型:

This attribute applies when the value of the type attribute is text, search, tel, url or email; otherwise it is ignored

关于CSS 输入 :invalid incorrectly applied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23107980/

相关文章:

javascript - 单击触发按钮在“阅读更多”和“阅读更少”按钮中不起作用

wpf - Validation.ErrorTemplate 未显示

jquery - 当不透明度为零时,下拉列表项仍然可单击

css - 在不知道文本颜色的情况下使链接颜色与文本颜色相同?

html - 与其他浏览器相反,IE7 绝对位置从行首开始

html - 如何去除丑陋的表格单元格边框?

javascript var.className 不是很懂

html - 左浮动 div 的 100% 背景,其中另一个右浮动 div 超过左

hibernate - 如何使用 Hibernate 配置自定义消息插值?

javascript - 使用必需的复选框验证来防止表单提交