以密码格式屏蔽一些信用卡号码

时间:2016-09-17 08:04:43

标签: javascript html css angularjs html5

我正试图在文本字段中屏蔽密码格式的信用卡号码。

**** **** **** 1234

有没有人知道找到这个的明确,可靠的方法?

2 个答案:

答案 0 :(得分:2)

好吧,你可以让前三种输入类型为密码类型,最后一种类型为文本:

function input_onchange(me) {
    if (me.value.length < me.getAttribute('maxlength') - 1) {
        return;
    }
    var i;
    var elements = me.form.elements;
    for (i = 0, numElements = elements.length; i < numElements; i++) {
        if (elements[i] == me) {
            break;
        }
    }
    elements[i + 1].focus();
}
<form action="post.php" method="post" accept-charset="utf-8">
    <input type="password" value="" id="first" size="4" maxlength="4"
        onkeypress="input_onchange(this)"/>
    <input type="password" value="" id="second" size="4" maxlength="4"
        onkeypress="input_onchange(this)"/>
    <input type="password" value="" id="third" size="4" maxlength="4"
        onkeypress="input_onchange(this)"/>
    <input type="text" value="" id="fourth" size="4" maxlength="4"/>
    <p><input type="submit" value="Send Credit Card"></p>
</form>

答案 1 :(得分:2)

如果您想将所有数字保存在一个input中,您可以执行以下操作:

&#13;
&#13;
$("#ccNr").keydown(function(e){
  if(e.keyCode != 8){
    var length = $(this).val().replace(/ /g,"").length;
    if(length < 12){
       var val = "";
       for(var i = 0; i < length + 1; i++){
       	  val+="*";
     	  if((i+1)%4 == 0){
            val+=" ";
          }
       }
       $(this).val(val);
    }
    if(length < 12 || length >= 16){
        e.preventDefault();       
    }
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="ccNr">
&#13;
&#13;
&#13;

这绝对可以改善。我只想说明这个想法。主要是覆盖keydown事件的默认行为。 e.keyCode != 8检查确保按下的键不是退格键键。如果你打算使用它,你应该检查一些其他键。此外,您可能希望忽略非数值。