【发布时间】:2019-01-10 15:35:49
【问题描述】:
我一直在阅读许多其他问题,例如这些[1][2][3],但问题仍然存在。
我需要找到一种“最干净”的方式来为移动设备创建一个 HTML input 并遵守所有这三个规则:
-
主要适用于数字、整数或浮点数
-
在移动设备上显示数字键盘,在 Android 版 Chrome 和 iOS 版 Safari 上显示,没有奇怪的额外键
-
完全遵守 HTML5 规则,经过 W3C 验证器测试
我尝试了什么?
我遇到过这些解决方案,但它们都不完全遵守上述三个规则。
解决方案 1
<input type="text" pattern="\d*" />
此解决方案尽管在 iOS 中工作并符合 W3C 验证器测试的 HTML 规则,但在 Chrome Android 中提供了带有 QWERTY 键盘的完整键盘。
解决方案 2
<input type="number" pattern="\d*" />
此解决方案适用于 iOS 和 Android Chrome 系统,在两个系统上均显示数字键盘,但使用 W3C 验证器会引发 HTML 验证错误:
pattern 属性仅在输入类型为电子邮件、密码、搜索、电话、文本或 url 时才允许使用。
解决方案 3
<input type="number" />
此解决方案通过了 W3C HTML 测试,在 Chrome 上显示不错,但在 iOS 键盘上显示了几个不需要的键
解决方案 4
我看到很多开发者都在使用这个解决方案
<input type="tel" />
但在 Android Chrome 中它不允许点符号.(因此没有浮动),并且键有字母,这是多余的
【问题讨论】:
-
所以要明确一点,您有一种适用于 iOS 的方式和一种适用于 Android 的方式,但不是两者兼而有之?如果是这样,您可以检测用户使用的是哪个操作系统(请参阅here),然后根据操作系统使用适当的解决方案。
-
@Alex 解决方案 2 可以在两个系统上运行,这就是我使用的系统,但它在 W3 验证器上给出了 HTML 错误。
-
嗯,好吧,如果您打算进行 W3 的验证,我不知道有什么方法可以使选项 2 起作用。你有什么原因不能做上述系统检查吗?
-
@Alex 相应地更改输入太复杂了,因为以下所有 jQuery 函数都假定输入的特定模式。我想知道是否有可能获得“静态”解决方案
-
啊,我明白了。那么我很抱歉,但我帮不上什么忙,抱歉。祝你好运!
标签: mobile-safari html-input android-keypad numeric-keypad iphone-keypad