在Chrome 15中,当使用元素作为文本字段时,即使输入的数字不会破坏验证规则(例如,min,max),也会删除前导零(例如011)。是否有一个属性强制零在失去焦点后保留在字段中?此应用程序是数字数据,如国际电话前缀。
答案 0 :(得分:39)
<input type="text" pattern="[0-9]*" ...
应该为你做。将打开iPhone上的数字键盘和我测试过的更好的Android手机。
答案 1 :(得分:28)
<input type="tel">
。它是HTML5中的新输入类型之一。
答案 2 :(得分:15)
我需要它用于手机浏览器,我使用了这两种解决方案的混合:
<input type="tel" pattern="[0-9]*">
在iOS上,数字键盘只显示数字(没有#或*符号),而在Android手机上,“tel”被正确解释但不是模式(我的手机上还没有)。
我想当android浏览器开始实现“pattern”属性时,这应该在android上运行正常(如the whatwg spec suggests)。
在此之前,您必须检查输入中的非数字字符并将其删除。 javascript replace(/ [^ 0-9 *] / g,'')对此很有用。
希望这会有所帮助
答案 3 :(得分:4)
WHATWG在IRC中为我提供的答案是,对于本质上是数字的非数字(例如非浮点数/整数)数据,文本通常是要使用的正确输入类型。如果您使用的是某些特定输入类型(例如电话号码,日期)已存在的内容,则可以使用此操作。
输入类型=数字只应用于字面数字(int)的输入,而不能用于使用数字的数据(例如邮政编码)。
答案 4 :(得分:2)
8年后...
当心:
使用type="tel"
的答案不要可以完全解决该问题,尤其是在数字字段中,您可能需要写浮点/小数和其他允许的字符(如+-。 )。
解决方案:
考虑使用带有模式和输入模式的文本输入,如下所示:
<input type="text" inputmode="numeric" pattern="[-+]?[0-9]*[.,]?[0-9]+">
详细信息:
那里的模式将有助于保持前导0,并且表现得像数字字段(带有所有其他允许的字符)。
并且inputmode="numeric"
将拉动数字键盘,而不是默认键盘。