【发布时间】:2021-12-28 15:41:26
【问题描述】:
在<input type="number"> 中,我可以在 Chrome 中输入以下无效输入:
- 输入
11, - 在两个
1s 之间移动中间的插入符号, - 输入
-。
但是,我不能输入这个无效的输入:
- 输入
1e, - 在
1和e之间移动插入符号, - 按
-;它不会被输入。
但是这两个值都无效:input.value 是空字符串。
这种行为背后的逻辑是什么?
以下示例供您键入数字:
addEventListener("input", ({ target: { value } }) => 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