CSS输入:无效的错误应用

Wes*_*ley 7 css validation html5

我有这个小提琴:

http://jsfiddle.net/rkTCq/

代码只是带有模式的类型编号的输入字段

pattern="[0-9]+(\.[0-9]+)?"
Run Code Online (Sandbox Code Playgroud)

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

input:invalid { border:1px solid red; }
Run Code Online (Sandbox Code Playgroud)

但是,如果我输入1.3然后标出字段,我会得到一个红色边框,即使根据模式这是正确的.这有什么不对?

PS:这是在野生动物园.

编辑:好的,我添加了step ="any",这似乎解决了它.你们能证实吗?

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

Cod*_*gue 8

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

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">
Run Code Online (Sandbox Code Playgroud)

另外,根据MDN pattern不适用于以下number类型:

当type属性的值为text,search,tel,url或email时,此属性适用; 否则会被忽略

  • 另外一个潜在的复杂因素:并非所有语言都使用点作为小数分隔符(在瑞典和芬兰,他们使用逗号代替).我不确定如果您的计算机使用这样的文化,"数字"类型的行为如何 - 我本来期望它使用页面中的langauge,而不是客户端,但实际上没有测试过.有人吗? (2认同)