我有一个网页应用,其布局设置为可与移动设备配合使用。但是,表单中的大多数输入字段都是数字。
每当我使用Android手机访问表单并单击其中一个输入字段以创建输入字段时,qwerty就会出现,我必须切换到数字输入法并输入一些数字。这很不方便。
是否有HTML属性或某事物。类似的将使Android(和iPhone)显示数字键盘作为默认值?
同样,这是一个Rails应用程序,而不是原生智能手机应用程序。
感谢任何帮助,谢谢。
答案 0 :(得分:13)
在HTML 5中,type='number'
表示字段只需要数字,而现代浏览器只允许数字输入。
<input type='number' value='123' />
编辑:
让我稍微修改一下,因为从评论来看,原始答案对于大多数人来说有点浅薄。
基本上,您有三种选择:type='number'
,type='range'
和type='tel'
。 他们都没有保证工作。结果因浏览器和键盘而异。
例如,我的Android Opera Mobile不会要求使用数字键盘,但它会在桌面版本的number
字段中添加一个旋转框。一个与step='0.1'
一起使用但不适合当前实现的移动使用的旋转框。
在我的Android Firefox 5上,number
也没有用我的股票输入产生数字键盘 - 这就是我开始怀疑我的股票键盘是否支持数字 - 但tel
的确如此!用点!以及1 2 3的ABC DEF GHI也给出了它。
但是(更新2013-08:type='tel'
不是HTML5标准(尚未),并且您无法从浏览器获得验证。tel
已成为HTML5标准!I我不确定什么时候......)
对于range
,规范要求浏览器提供滑块而不是输入框。有些人做了,有些做不到,而iPhone Safari在我检查的后期阵营中。如果您不介意不同的演示文稿,那么它可能是更好的选择。
答案 1 :(得分:7)
我发现组合2种方法可以实现这一点。
在大多数Android浏览器中,设置type="number
应该可以在大多数情况下完成。但是,在iOS中这将调出普通键盘,但默认为数字和特殊字符页面。我更喜欢手机拨号类型输入。要在iOS中完成此操作,请使用pattern
属性。最终的HTML元素如下所示:
<input type="number" pattern="[0-9]*" value="123" />
答案 2 :(得分:1)
type ='tel'/ HTML增强?
如果type ='tel'不是html5的一部分,那么谁组织该属性的精确行为?
希望tel属性应该接受两种样式:
以下是芬兰的一个例子:
0401234567
以下是来自芬兰的相同示例,但采用适当的国际格式:
358401234567
因此,在“tel”中,规则应如下:
第一个字符可以是数字或特殊字符“+”。
任何其他字符必须是数字。
此格式适用于任何国家/地区。
这是澳大利亚的另一个例子:
+61418765432(国际格式)
0418765432(国家格式的同一电话号码)
北美人似乎使用他们自己的格式,如(212)1234567。
但是,问题在于它与其他所有国家都不相容。
另外需要注意的是,有效电话号码的长度可能因国家之间甚至同一国家/地区而异。因此,“电话”不应强制任何长度限制,至少不要过于严格。
我不知道,国际格式的最长合法电话号码长度是多少。
但是,在芬兰,它在全国范围内被指定为12位有效数字。
所以,这里有一个可以在芬兰使用的最长有效数字的例子:
0501234567890
或
+358501234567890,国际格式。
在GSM手机中,如果您使用电话号码作为AT命令的一部分,您可以(在某些命令中)指定号码的类型(格式)。但如果你不这样做,
默认情况下假设该号码采用正确的国际格式,如果号码以“+”字符开头,
否则假定采用国家格式,
意味着以数字开头的数字将转到移动电话当前所在的国家/地区,除非该号码以在移动电话当前所在国家/地区生效的已知国际前缀开头
那么,“tel”在美国以外的国家是否可以安全使用,或者是否强制使用北美格式,这对于除美国以外的每个国家都是错误的?
答案 3 :(得分:0)
如果只需要显示专用键盘,而没有相应的语义,验证等,则可以使用inputmode
attr,例如:
<input type="text" value="+1234567890" inputmode="tel" />
<input type="text" value="123.45" inputmode="decimal" />