我理解为什么数字输入允许"e"或"E",但我很困惑为什么它允许多个小数.
如果查看有效浮点数的规范,可以得到:
如果字符串包含以下内容,则该字符串是有效的浮点数:
- 可选地," - "(U + 002D)字符.
- 按给定顺序执行以下一项或两项操作:
- 一系列一个或多个ASCII数字.
- 一个单一的"." (U + 002E)字符.
- 一系列一个或多个ASCII数字.
- 可选:
- 可以是"e"(U + 0065)字符或"E"(U + 0045)字符.
- 可选地," - "(U + 002D)字符或"+"(U + 002B)字符.
- 一系列一个或多个ASCII数字.
我在这里看到的所有内容都表明输入中只允许一个小数点,并且在指定带有"e"的指数之前必须包含小数,并且无论如何都只能有一个"e".
然而,允许这样的输入:
等等.
在IE 11,这将让我在任何字符串我什么,但除非它是一个"有效"号码的类型.value
是""
.在这种情况下, 1......e
是有效的,但eeeeee
不是.如果IE确定该值无效,则在远离输入的焦点上,显示屏空白,从而阻止用户修改现有输入.
在Chrome 51中,它只会让我输入数字,+/ - ,e/E和".".当我检查输入的值,如10.0.
额外的十进制,它仍然返回值10.0
,但如果我键入10.0.0
或10..
字符串恢复为空.Chrome将保留显示无效输入.
当字符串变空时,它会阻止对输入进行进一步的验证检查并提供有用的用户反馈.
那么,为什么在数字输入字段中允许多个小数开始,为什么它们在浏览器之间如此奇怪地处理呢?