我有一个应用程序,用户必须在数字类型文本框中输入至少15位数字。
如果用户输入更长的数字,有时> = 19位数,然后使用右侧的箭头或键盘上的箭头键,它会将数字自动编码为e+
的浮点数。这显然不是理想的结束。
<input min="0" type="number" value="7897894561234567898">
&#13;
删除或抵消此行为的最佳方法是什么?有什么要做的,还是我必须使用文本类型输入? (我不愿意)。
答案 0 :(得分:1)
HTML5 <input type=number>
专门使用与JavaScript相同的Number类型。 maximum integer value before precision is lost是9007199254740991,有16位数字。
您不能处理比JavaScript中的数字更大的整数,您必须将其视为字符串。
您应该使用<input type=text>
,pattern
属性进行验证,使用inputmode
属性进行触摸。默认验证消息没用,因此也应该处理'invalid'
事件。
(开玩笑,任何地方都不支持inputmode
。您应该使用<input type=tel>
在触摸屏设备上显示数字键盘。)
<form>
<input name=num type=tel
required pattern="\d+"
oninvalid="setCustomValidity('A number is required')"
oninput="setCustomValidity('')">
<input type=submit>
</form>
规范中有关于信用卡号码的说明:
type=number
状态不适用于仅由数字组成但严格来说不是数字的输入。例如,它不适合信用卡号码或美国邮政编码。确定是否使用type = number的简单方法是考虑输入控件是否有意义具有旋转框接口(例如,具有“向上”和“向下”箭头)。
请参阅:https://html.spec.whatwg.org/multipage/input.html#number-state-(type=number)