我想在“onkeyup”事件中将前 12 位数字屏蔽为 * 并保留接下来的 4 位数字。下面的函数是屏蔽前 12 位数字,但在“onblur”事件中一次全部屏蔽。我已经尝试过来自 stackoverflow 的所有答案,但没有一个能帮到我。function formatCardNumber(element) { if(element.value.length > 14) { var position = element.selectionStart; element.value = element.value.replace(/\W/gi, '').replace(/^(.{4})(.{4})(.{4})(.*)$/, "$1 $2 $3 $4"); if(element.value.length != 19) { element.setSelectionRange(position, position); } } else { element.value = element.value.replace(/\W/gi, '').replace(/(.{4})/g, '$1 '); } }function showCardValue() { document.getElementById("cardNo").value = document.getElementById("cardNoSafe").value;}function hideCardValue(val) { document.getElementById("cardNoSafe").value = val; var len = val.length; if (len >= 14) { const regex = /\d{4}(?= \d{1})/g; const substr = "****"; document.getElementById("cardNo").value = val.replace(regex, substr); }}<div> <input id="cardNo" placeholder="Enter Card Number" onfocus="showCardValue()" onblur="hideCardValue(this.value)" onkeypress="formatCardNumber(this)" maxlength="19"> <input id="cardNoSafe" value="" style="display:none;"></div>
2 回答
![?](http://img1.sycdn.imooc.com/54586431000103bb02200220-100-100.jpg)
牛魔王的故事
TA贡献1830条经验 获得超3个赞
我无法为您提供完整的解决方案,但这应该足以让您将其适应您自己的工作,包括您所要求的行为:)
function hideCardValue(element){
var tmpval = element.value;
if(tmpval.length <12){
var re = /\d{1}/;
document.getElementById("cardNoSafe").value += tmpval.replace(new RegExp('\\*', 'g'),"");
document.getElementById("cardNo").value = tmpval.replace(/\d{1}/,"*");
}
}
<div>
<input id="cardNo" placeholder="Enter Card Number" onkeyup="hideCardValue(this);" maxlength="19">
<input id="cardNoSafe" value="" style="display:true;">
</div>
我使隐藏的 Box 可见以查看安全值。
希望这可以帮助 ;)
添加回答
举报
0/150
提交
取消