当前位置: 首页 > 知识库问答 >
问题:

为什么输入type=number允许多个小数?

陆城
2023-03-14

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

  1. 可选“-”(U+002D)字符。
  2. 按照给定的顺序,下列一项或两项:
    1. 一个或多个ASCII数字的序列。
      1. 一个单一的“。(u+002e)字符。
      2. 一个或多个ASCII数字的序列。
      1. “E”(U+0065)字符或“E”(U+0045)字符。
      2. 可选“-”(U+002D)字符或“+”(U+002B)字符。
      3. 一个或多个ASCII数字的序列。
        null

      在IE11中,它允许我输入任何字符串,但是除非它是一个“有效”的数字,否则.value“”。在本例中,1......e有效,但eeeee无效。如果IE确定该值无效,那么在远离输入的焦点上,显示将被清空,阻止用户修改现有的输入。

      在Chrome51中,它只允许我键入数字、+/-、E/E和“.”。当我用一个额外的小数检查像10.0.这样的输入值时,它仍然返回10.0的值,但是如果我键入10.0.010...,字符串将恢复为空。Chrome将保留显示无效的输入。

      当字符串为空时,它将阻止对输入进行进一步的验证检查,并给出有用的用户反馈。

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

共有1个答案

燕凯旋
2023-03-14

我做了一些挖掘,我有预感这可能是Chrome实现数字输入的一个bug。

这里是变更集,他们在其中修正了Number类型输入中允许的字符。

值得注意的是这一行:

event->setText(locale().stripInvalidNumberCharacters(event->text(), "0123456789.Ee-+"));
 类似资料:
  • 我有一个输入字段,用户只能在其中输入数字。 JSFIDLE演示 问题是:当我输入一个数字(例如,)然后按点()时,或-浏览器会自动删除输入字段的内容(值设置为“”=空字符串)。但是为什么呢?将类型从更改为似乎可以解决问题。但是,我失去了输入字段的向上/向下箭头功能。有什么想法吗?

  • 问题内容: 我有以下html5输入元素: 为什么此输入允许在输入字段中输入字符“ e”?没有其他字母字符可以输入(按预期方式) 使用chrome v.44.0.2403.107 问题答案: 因为这正是规范所说的应该工作的方式。输入的数字可以接受浮点数,包括负号和或字符(其中指数是或后面的数字): 浮点数按以下顺序由以下部分组成: 可选地,第一个字符可以是“ ”字符。 “ ” 范围内的一个或多个字符

  • 问题内容: Java中的数组的长度是固定的。Java为什么要允许大小为0的数组呢? 问题答案: 它表示它为空。即您可以遍历它,就好像它有项目并且没有结果发生一样: 从而避免了检查的需要。如果所讨论的数组为,则会发生异常,但是在这种情况下,它什么也不做,这可能是适当的。

  • 我想在html表单中将用户输入限制为正数。 我知道您可以设置min=“0”,但是可以通过手动输入负数绕过此设置。 有没有其他方法可以解决这个问题而不用编写验证函数?

  • 问题内容: 我使用的是PHP,而MySQL使用的是PDO。有时我需要准备一个在此查询中多次使用一个变量(占位符)的语句。 例: 但是,如果我尝试准备该语句,则会出现错误,因此我需要采用以下方式: 要调用此语句,我将需要具有以下数组: 对我来说真是太蠢了!为什么MySQL(PDO?)不允许我多次使用一个占位符,并迫使我使用需要更多控制权的额外变量? 如果查询相对简单(如我在上面发布的内容),则可以轻