我有一个<input type="number"></input>
字段,当我尝试输入一个小数作为第一个字符时,它会变为无效(我有一个ng-change激发)。
.5
无效,但0.5
有效。我能做点什么吗?
答案 0 :(得分:3)
根据HTML规范,.5
对<input type="number">
有效。
所以,你是对的,验证错误源于的工具(浏览器?Angular?)是错误的。
至于如何处理它 - 如何解决它 - 我不知道该建议什么,但作为一个真正研究这些东西规格的人,我想请你至少取悦提交任何工具的错误(错误)执行导致您看到该消息的实际验证。如果没有人花时间报告这样的规范一致性错误(但是只是通过放置,例如,0.5
来通过它来解决所有问题),那么错误永远不会得到解决。
无论如何,就我的断言证明.5
实际上是有效的:HTML规范在这方面非常明确;见the section defining what a valid floating-point number is:
字符串是有效浮点数,如果它包含:
- 可选地,U + 002D HYPHEN-MINUS字符( - )。
- 以下给定顺序中的一个或两个:
- 一系列一个或多个ASCII数字。
- 以下两种方式,按给定的顺序排列:
- 单个U + 002E FULL STOP字符(。)。
- 一系列一个或多个ASCII数字。
- 任选地:
醇>
- U + 0065 LATIN SMALL LETTER E字符(e)或U + 0045 LATIN CAPITAL LETTER E字符(E)。
- (可选)U + 002D HYPHEN-MINUS字符( - )或U + 002B PLUS SIGN字符(+)。
- 一系列一个或多个ASCII数字。
除了来自规范本身的证据之外,还有其他支持证据的记录:实际上有一段时间HTML规范不允许.5
,而是要求将其写为{{1 }};然而,在针对规范提出“Floating point numbers beginning with a dot should be valid and parsed correctly”错误之后,该规范随后被更改(在2011年)以说明它当前所声明的内容(即,允许,例如,0.5
)。
因此,自2011年以来,任何标记.5
错误的工具可能都没有在这方面进行更新,因此无论其维护者是否需要重新使用其代码和版本。根据当前规范要求评估其代码,以确保它们符合当前规范。
我希望上面提供足够的弹药用于提出针对负责任工具的错误。
答案 1 :(得分:0)
如果您希望所有输入数字都有效,那么您可以在输入字段中设置步骤为&#34;任何&#34;。它适用于所有整数和小数。喜欢 -
<input type="number" step="any" />