小编Web*_*ead的帖子

为什么输入类型=数字允许多个小数?

我理解为什么数字输入允许"e"或"E",但我很困惑为什么它允许多个小数.

如果查看有效浮点数的规范,可以得到:

如果字符串包含以下内容,则该字符串是有效的浮点数:

  1. 可选地," - "(U + 002D)字符.
  2. 按给定顺序执行以下一项或两项操作:
    1. 一系列一个或多个ASCII数字.
      1. 一个单一的"." (U + 002E)字符.
      2. 一系列一个或多个ASCII数字.
  3. 可选:
    1. 可以是"e"(U + 0065)字符或"E"(U + 0045)字符.
    2. 可选地," - "(U + 002D)字符或"+"(U + 002B)字符.
    3. 一系列一个或多个ASCII数字.

我在这里看到的所有内容都表明输入中只允许一个小数点,并且指定带有"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.010..字符串恢复为空.Chrome将保留显示无效输入.

当字符串变空时,它会阻止对输入进行进一步的验证检查并提供有用的用户反馈.

那么,为什么在数字输入字段中允许多个小数开始,为什么它们在浏览器之间如此奇怪地处理呢?

html html5

9
推荐指数
1
解决办法
1104
查看次数

标签 统计

html ×1

html5 ×1