2013-03-06 74 views
4

我正在使用PhoneGap进行Android的移动项目,并使用Samsung Galaxy S2 Skyrocket,android版本4.0.4进行测试。现在我有一个只能接受数字密码的html输入字段,所以我首先设置这样的输入

<input type="password" id="Password"/>
它给了我在Android的字母键盘,但我想显示的键盘是数字。

所以我改变我的代码是
<input type="tel" id="Password"/>并使用CSS来掩盖密码
如何在Android中显示用于密码字段的数字软键盘

<style type="text/css"> 
     #Password { 
      -webkit-text-security: disc; 
     } 
</style> 


但掩蔽工作不一样的类型=“密码”,它会掩盖密码当密码框没有得到重点。如果焦点集中,密码将不会被光盘屏蔽,因此会显示。

是否有任何方法可以让数字键盘显示并让密码始终被屏蔽?

谢谢。

+1

你的代码是缺少 – Whizkid747 2013-03-06 20:17:58

+0

对不起Whizkid747,这是我第一次发布一个问题,所以我发布这个问题以保存目的,现在已经完成。 – 2013-03-06 20:30:19

+0

#Password input [type = number] { -webkit-text-security:disc; } – Whizkid747 2013-03-06 22:51:16

回答

1

我得到这个固定

密码输入标签是像这样

<div id="passwordCell" style="display:inline;"> 
    <input type="password" pattern="[0-9]*" name="Password" id="Password" placeholder="4 digit numeric only allowed" maxlength="4"/> 
</div> 

一个div所以,我解决了以下步骤的问题:

  1. 添加其他输入字段放在#passwordCell div中,并给它一个id,例如,password_mask <input type="tel" name="password_mask" id="password_mask" placeholder="4 digit numeric only allowed." maxlength="4"/>

  2. 隐藏#password口令输入字段
    $("#Password").hide();

  3. 绑定一个jQuery keyup事件到#password_mask输入字段使它通过其inputed值#password口令字段,并将其替换在输入的字符在#password_mask *。
    我这样做是因为在年底#password口令值将被发送到服务器的用户的密码

这里的javascript代码,我用jQuery的

$("#passwordCell").html(''); 
$("#passwordCell").append('<input type="tel" name="password_mask" id="password_mask" placeholder="4 digit numeric only allowed." maxlength="4"/>' + 
          '<input type="password" pattern="[0-9]*" name="Password" id="Password" placeholder="4 digit numeric only allowed" maxlength="4" data-validation-required="true" data-validation-pattern="pin not_empty"/>'); 
$("#password_mask").textinput(); 
$("#Password").textinput(); 
//$("#password_mask").show(); 
$("#Password").hide(); 
$("#password_mask").keyup(function() { 
    var inputLength = $(this).val().length; 
    var passwordLength = $("#Password").val().length; 
    if (inputLength > passwordLength) { 
     var inputLastChar = $(this).val().charAt(inputLength-1); 
     $("#Password").val($("#Password").val() + inputLastChar); 
    } else { 
     $("#Password").val($("#Password").val().substring(0, $(this).val().length)); 
    } 

    var i = 0; 
    var maskPassword = ""; 
    while (i < $("#password_mask").val().length) { 
     maskPassword += "*"; 
     i++; 
    } 
    $("#password_mask").val(maskPassword); 
}); 
$("#password_mask").blur(function() { 
    $("#Password").focus(); 
    $("#Password").blur(); 
});