HTML5输入类型数字16位或更多的Chrome替换为零

3

有没有其他人在使用数字输入类型时遇到Chrome的问题,当数字位数超过16位时?在我的情况下,第16位后的任何数字在失去焦点时都会被替换为零。这在其他浏览器中不会发生。

<label for="some-number-input">Number Input</label>
<input type="number" name="some-number-input" id="some-number-input" />

除了更改输入类型,还有其他解决方案吗?谢谢。
1个回答

4
当数值输入框失焦时,Chrome会解析该数字。根据WHATWG标准,它应将其转换为IEEE 754双精度浮点数,就像JavaScript中表示数字的方式一样。与JavaScript类似,这些数字的精度也有限制,因此需要四舍五入。
你可能需要使用<input type="text">代替。

感谢您的输入。我试图避免使用文本输入类型,因为我希望在移动设备上出现数字键盘。电话输入类型可以工作,因为它不会四舍五入,但它不符合语义,而且它会在数字键盘上显示字母。对此有什么想法吗? - Matty B
1
你确定输入类型为数字在语义上也是正确的吗?如果你正在输入身份证号码或其他内容,我很确定那不是正确的。如果你只想要数字键盘,另一篇帖子说你可以为iOS设备设置模式属性,但我不知道这是否适用于其他地方。 - gengkev
你说得对,看起来我根据规范没有正确使用数字类型。唉,似乎在Android上模式“\d*”不起作用。看起来目前没有办法强制使用数字键盘输入长ID号码。 - Matty B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接