32

我在 Opera 上试过了<input type="number" />,它输出一个奇怪的输入框和一个“上下”处理程序。我所期望的是一个常规的文本字段,一旦你关注它就会提示数字键盘而不是字母。这甚至可能吗?

ps 我不想验证。这将是一个很好的用户体验,仅此而已。

4

6 回答 6

47

采用pattern="[0-9]*"

  • 数字输入示例:<input type="number" pattern="[0-9]*" />

  • 电话输入示例:<input type="tel" pattern="[0-9]*" />

注意:不支持的浏览器type="tel"会默认为文本类型

注意:使用type="number"可能会导致某些浏览器出现问题,并导致用户在信用卡、邮政编码和电话输入方面出现问题,用户可能需要在输出中输入标点符号或逗号。

参考:

于 2014-11-18T22:40:57.817 回答
20

处理电话号码的官方 HTML5 方法是:

<input type="tel">

您可能不喜欢使用 Opera 时获得的“奇怪的输入框” <input type="number" />,但当您想要要求访问者输入数值时,这确实是合适的输入区域类型。

于 2010-07-30T04:20:37.423 回答
12

type="number" 是 HTML5 并且许多手机不支持 HTML5。对于呼叫链接,您可以使用 type="tel" 或 <A href="wtai://wp/mc;600112233">Special A</A>. 您也应该查看CSS WAP 扩展(第 56 页)

编辑 10/2015:
大多数(如果不是所有)智能手机都支持 HTML5 和 CSS3,所以type="number"是最好的方法。

于 2010-07-30T10:13:48.807 回答
10

该帖子现在无效。现在所有智能手机都支持 HTML5 和 CSS3,因此添加 type="number" 实际上会提示数字键盘弹出。我刚刚在 2 个不同的 Android 版本和 iPhone 上检查了它。就这样,将来没有人会尝试 WAP 而不是正确的 HTML5 格式。

于 2014-07-03T16:41:41.747 回答
2

这将适用于移动设备,并且会阻止在桌面版页面中输入字母“e”(以及所有其他字母)。type="number"本身通常仍然允许每个规格的“e”:

<input pattern="[0-9]*" type="text" oninput="this.value=this.value.replace(/[^0-9]/g,'');">

如果您type="number"在上面使用,那么如果您键入“123”然后“e”,oninputJS 将替换框中的所有内容。如果您真的只想要整数值,只需使用 type="text" 。

于 2019-07-11T21:26:16.037 回答
0

试试<input type="number" pattern="/d*"> OR <input type="tel" pattern="/d*"> 如果您使用 Android,这将有所帮助。

于 2017-10-17T15:53:42.940 回答