十进制作为数字输入字段中的第一个字符

时间:2015-09-15 17:19:03

标签: html angularjs html5 angularjs-directive html-validation

我有一个<input type="number"></input>字段,当我尝试输入一个小数作为第一个字符时,它会变为无效(我有一个ng-change激发)。

.5无效,但0.5有效。我能做点什么吗?

2 个答案:

答案 0 :(得分:3)

根据HTML规范,.5 <input type="number">有效。

所以,你是对的,验证错误源于的工具(浏览器?Angular?)是错误的。

至于如何处理它 - 如何解决它 - 我不知道该建议什么,但作为一个真正研究这些东西规格的人,我想请你至少取悦提交任何工具的错误(错误)执行导致您看到该消息的实际验证。如果没有人花时间报告这样的规范一致性错误(但是只是通过放置,例如,0.5来通过它来解决所有问题),那么错误永远不会得到解决。

无论如何,就我的断言证明.5实际上是有效的:HTML规范在这方面非常明确;见the section defining what a valid floating-point number is

  

字符串是有效浮点数,如果它包含:

     
      
  1. 可选地,U + 002D HYPHEN-MINUS字符( - )。
  2.   
  3. 以下给定顺序中的一个或两个:      
        
    1. 一系列一个或多个ASCII数字。
    2.   
    3. 以下两种方式,按给定的顺序排列:      
          
      1. 单个U + 002E FULL STOP字符(。)。
      2.   
      3. 一系列一个或多个ASCII数字。
      4.   
    4.   
  4.   
  5. 任选地:      
        
    1. U + 0065 LATIN SMALL LETTER E字符(e)或U + 0045 LATIN CAPITAL LETTER E字符(E)。
    2.   
    3. (可选)U + 002D HYPHEN-MINUS字符( - )或U + 002B PLUS SIGN字符(+)。
    4.   
    5. 一系列一个或多个ASCII数字。
    6.   
  6.   

除了来自规范本身的证据之外,还有其他支持证据的记录:实际上有一段时间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" />