2016-09-17 61 views
-1

我试图在文本字段中以密码格式掩盖信用卡号码。以密码格式掩盖信用卡号码的一些数字

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

有谁知道一个明确的,可靠的方式来找到这个?

+0

所以你想部分掩盖卡号。对? – Sankar

+0

不,我想要MasterCard(16),Visa(13,16)和Discover(16) –

回答

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>

+0

Nehal,我只想使用一个输入,因为我正在使用Angular Material验证。 –

1

如果你想保留的所有号码在一input,你可以做这样的事情:

$("#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++){ 
 
     \t val+="*"; 
 
     \t if((i+1)%4 == 0){ 
 
      val+=" "; 
 
      } 
 
     } 
 
     $(this).val(val); 
 
    } 
 
    if(length < 12 || length >= 16){ 
 
     e.preventDefault();  
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="ccNr">

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