【问题标题】:In Chrome why can the invalid input `1-1` be typed in an `<input type="number">`, but not `1-e`?在 Chrome 中,为什么可以在 `<input type="number">` 中输入无效输入 `1-1`,而不是 `1-e`?
【发布时间】:2021-12-28 15:41:26
【问题描述】:

&lt;input type="number"&gt; 中,我可以在 Chrome 中输入以下无效输入:

  1. 输入11,
  2. 在两个1s 之间移动中间的插入符号,
  3. 输入-

但是,我不能输入这个无效的输入:

  1. 输入1e,
  2. 1e 之间移动插入符号,
  3. -;它不会被输入。

但是这两个值都无效:input.value 是空字符串。

这种行为背后的逻辑是什么?

以下示例供您键入数字:

addEventListener("input", ({ target: { value } }) =&gt; document.querySelector("p").textContent = value);
<input type="number"/>
<p></p>

【问题讨论】:

  • “我在哪里可以读到这背后的逻辑?”阅读引擎的源代码??
  • @epascarello 这不是一件容易的事。 Chromium 存储库很大。如果您知道我应该查看哪个文件或文件夹,请提供路径
  • 好的,现在问题很清楚了,但是为什么重要?无论如何,这些都是无效的输入。顺便说一句,Firefox 允许输入这些字符。
  • @SebastianSimon That 感谢您编辑问题。我只是好奇为什么它会这样工作。 Firefox 允许输入所有字符。
  • @Teemu 不,两者都遵循标准。 “控件的价值是它的内部状态。因此,它可能与用户的当前输入不匹配。例如,如果用户在需要数字的数字字段中输入单词 "three",则用户的输入将是字符串 "three",但控件的值将保持不变。” — 来自 @987654321 的定义@。用户代理如何处理用户的键盘输入似乎没有明确说明,但这只是一个与 HTML 本身无关的 UI / UX 问题。

标签: javascript html google-chrome


【解决方案1】:

如果要在标签 p 上写入这些字符,请将输入类型更改为“文本”。

E 代表指数,用于缩短长数字。由于输入是数学输入,而指数在数学中是为了缩短大数,所以这就是为什么有一个 E。

显示如下:4e.

如果你想屏蔽这些字符,你可以this

您可以阅读更多关于指数的Here

【讨论】:

  • 我的问题更多是为什么我可以写一种无效的数字输入,但不能写另一种数字输入
  • 简单,可以插入“-”号表示“取幂”,即:1-10即可; 1e-10 正常; 1-e 不存在;
猜你喜欢
  • 2019-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多