【发布时间】:2012-02-23 14:52:22
【问题描述】:
我有一个在 Android 平板电脑上运行的 HTML5 应用程序,其中有几个使用 type=number 的输入字段。当这些字段获得焦点时,数字键盘会按预期弹出。
其中一个字段是收集客户的社会安全号码。我们的要求是,该字段必须在聚焦时显示完整的 SSN,在模糊时显示点。我已经用两个 SSN 字段实现了这一点。一种是输入类型=密码,一种是输入类型=数字,默认隐藏。
<input type="password" name="SSN_Pass" id="SSN_Pass" value="" placeholder="SSN" />
<input type="number" name="SSN" id="SSN" value="" maxlength="9" class="required number" />
我有 jQuery,它在获得焦点时隐藏密码字段并显示数字字段。模糊数字字段会将值复制回密码字段。
$("#SSN_Pass").focus(function()
{
$(this).hide();
$("#SSN").show().focus();
});
$("#SSN").blur(function ()
{
$(this).hide();
$("#SSN_Pass").show().val($(this).val());
});
我遇到的问题是,当第一次在密码字段上获得焦点时,Android 浏览器中会弹出完整的字母数字键盘,无论是单击输入字段还是切换到它。用户必须单击现在可见的数字字段才能弹出数字键盘。即使我在 SSN 可见数字字段上调用 focus(),完整的字母数字键盘仍然存在。
我想通过某种方式告诉浏览器切换到数字键盘。我已经尝试了一些方法,例如使用短暂的 setTimeout 延迟重新强制焦点以及在现场没有运气的 trigger('focus')。
这不是问题的关键,但最好只有数字键盘,因为它会加快数据输入速度。
建议?
【问题讨论】: