我有一个移动网站,其中有一些HTML input
元素,如下所示:
<input type="text" name="txtAccessoryCost" size="6" />
我已经将该网站嵌入到一个WebView
可能使用Android 2.1 的网站中,因此它也将是一个Android应用程序。
当此HTML input
元素聚焦时,是否可以用数字键盘代替默认的带字母键盘?
或者,如果对于HTML元素不可行,是否可以为整个应用程序设置它(可能是清单文件中的内容)?
inputmode="number"
属性在2019年末似乎是正确的答案:developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/…。发表此评论时,投票率最高的答案表明type="number"
,这有其自身的陷阱。inputmode
似乎只影响虚拟键盘的显示,而不影响输入本身的行为/约束。
Answers:
<input type="number" />
<input type="tel" />
当输入获得焦点时,这两个按钮都会显示数字小键盘。
<input type="search" />
显示带有额外搜索按钮的普通键盘
其他一切似乎都带来了标准键盘。
type="tel"
更差type="number"
。
重要的提示
我将其发布为答案,而不是评论,因为它是非常重要的信息,它将以这种格式吸引更多关注。
正如其他人指出的那样,您可以使用type="number"
/ 强制设备向您显示数字键盘type="tel"
,但我必须强调,您对此必须非常谨慎。
如果有人期望以零开头的数字(例如)000222
,那么她可能会遇到麻烦,因为某些浏览器(例如台式机Chrome)将发送到服务器222
,而这并不是她想要的。
关于type="tel"
我不能说类似的话,但我个人不使用它,因为它在不同电话上的行为可能会有所不同。我将自己限制在pattern="[0-9]*"
无法在Android中使用的简单位置上
这应该工作。但是我在Android手机上也遇到同样的问题。
<input type="number" /> <input type="tel" />
我发现,如果不包括jquerymobile-framework,那么键盘会在两种类型的字段上正确显示。
但是,如果您确实需要使用jquerymobile,我还没有找到解决该问题的解决方案。
更新: 我发现,如果表单标签存储在
<div data-role="page">
数字键盘未显示。这一定是个错误...
inputmode
根据WHATWG规范是默认方法。
对于iOS设备,添加pattern
也可能会有所帮助。
为了向后兼容type
,自Chrome浏览器起,请从66版开始使用。
<input
inputmode="numeric"
pattern="[0-9]*"
type="number"
/>
decimal
,发现在这里developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/...
当输入类型为“数字”时,某些浏览器会向服务器发送前导零。因此,我混合使用jquery和html来加载数字小键盘,并确保该值以文本形式而不是数字形式发送:
$(document).ready(function(){
$(".numberonly").focus(function(){$(this).attr("type","number")});
$(".numberonly").blur(function(){$(this).attr("type","text")});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="numberonly">
type="digits"
选择,这样我们就不必再遇到这些黑客了。我的意思是,这并不像零开头的数字那么罕见(美国的邮政编码是一个明显的例子)。
在数字输入中添加步骤属性
<input type="number" step="0.01">
来源:http://blog.pamelafox.org/2012/05/triggering-numeric-keyboards-with-html5.html