我理解为什么
number inputs allow “e” or “E”,但我很困惑为什么它允许多个小数.
A string is a valid floating-point number if it consists of:
Optionally, a “-” (U+002D) character.
One or both of the following, in the given order:
A series of one or more ASCII digits.
A single “.” (U+002E) character.
A series of one or more ASCII digits.
Optionally:
Either a “e” (U+0065) character or a “E” (U+0045) character.
Optionally, a “-” (U+002D) character or “+” (U+002B) character.
A series of one or more ASCII digits.
我在这里看到的所有内容都表明输入中只允许一个小数点,并且在指定带有“e”的指数之前必须包含小数,并且无论如何都只能有一个“e”.
然而,允许这样的输入:
> 1 ….. 2
> ……
> eeee ……..
> 1.0.0.01.0
等等.
在IE 11中,它会让我输入任何字符串,但除非它是“有效”数字,否则.value为“”.在这种情况下,1 …… e是有效的,但eeeeee不是.如果IE确定该值无效,则在远离输入的焦点上,显示屏空白,从而阻止用户修改现有输入.
在Chrome 51中,它只会让我输入数字,/ – ,e / E和“.”.当我检查输入值如10.0.使用额外的十进制数,它仍然返回10.0的值,但如果我键入10.0.0或10 ..字符串将恢复为空. Chrome将保留显示无效输入.
当字符串变空时,它会阻止对输入进行进一步的验证检查并提供有用的用户反馈.
那么,为什么在数字输入字段中允许多个小数开始,为什么它们在浏览器之间如此奇怪地处理呢?