我在 Opera 上试过了<input type="number" />
,它输出一个奇怪的输入框和一个“上下”处理程序。我所期望的是一个常规的文本字段,一旦你关注它就会提示数字键盘而不是字母。这甚至可能吗?
ps 我不想验证。这将是一个很好的用户体验,仅此而已。
采用pattern="[0-9]*"
数字输入示例:<input type="number" pattern="[0-9]*" />
电话输入示例:<input type="tel" pattern="[0-9]*" />
注意:不支持的浏览器type="tel"
会默认为文本类型
注意:使用type="number"
可能会导致某些浏览器出现问题,并导致用户在信用卡、邮政编码和电话输入方面出现问题,用户可能需要在输出中输入标点符号或逗号。
参考:
处理电话号码的官方 HTML5 方法是:
<input type="tel">
您可能不喜欢使用 Opera 时获得的“奇怪的输入框” <input type="number" />
,但当您想要要求访问者输入数值时,这确实是合适的输入区域类型。
type="number" 是 HTML5 并且许多手机不支持 HTML5。对于呼叫链接,您可以使用 type="tel" 或
<A href="wtai://wp/mc;600112233">Special A</A>
. 您也应该查看CSS WAP 扩展(第 56 页)。
编辑 10/2015:
大多数(如果不是所有)智能手机都支持 HTML5 和 CSS3,所以type="number"
是最好的方法。
该帖子现在无效。现在所有智能手机都支持 HTML5 和 CSS3,因此添加 type="number" 实际上会提示数字键盘弹出。我刚刚在 2 个不同的 Android 版本和 iPhone 上检查了它。就这样,将来没有人会尝试 WAP 而不是正确的 HTML5 格式。
这将适用于移动设备,并且会阻止在桌面版页面中输入字母“e”(以及所有其他字母)。type="number"
本身通常仍然允许每个规格的“e”:
<input pattern="[0-9]*" type="text" oninput="this.value=this.value.replace(/[^0-9]/g,'');">
如果您type="number"
在上面使用,那么如果您键入“123”然后“e”,oninput
JS 将替换框中的所有内容。如果您真的只想要整数值,只需使用 type="text" 。
试试<input type="number" pattern="/d*">
OR
<input type="tel" pattern="/d*">
如果您使用 Android,这将有所帮助。