我试图将SSN字段中的所有数字都屏蔽为*,同时保持用户仅输入数字值并用破折号格式化SSN。
这是一个小提琴链接:
https://jsfiddle.net/7f8p83am/
$('#ssn').keyup(function() {
var val = this.value.replace(/\D/g, '');
var newVal = '';
var sizes = [3, 2, 4];
var maxSize = 10;
for (var i in sizes) {
if (val.length > sizes[i]) {
newVal += val.substr(0, sizes[i]) + '-';
val = val.substr(sizes[i]);
} else {
break;
}
}
newVal += val;
this.value = newVal;
});
Run Code Online (Sandbox Code Playgroud)
显然,替换将取代*。有关如何执行此操作的任何想法?
提前致谢。
您可以考虑删除输入的所有非数字和星号,并用asterisk替换数字:
// Remove all non-digits/asterisks and replace digits with asterisks
var val = this.value.replace(/[^\d\*]/g, '').replace(/\d/g,'*');
Run Code Online (Sandbox Code Playgroud)
此外,您可能还想尝试maxlength在元素上添加属性,以防止其继续:
<input id='ssn' maxlength='11'/>
Run Code Online (Sandbox Code Playgroud)
最后,您可能需要考虑存储一个隐藏字段或变量,该字段或变量将存储您正确的SSN值,以便您可以按预期将其发布到服务器。
例
// Remove all non-digits/asterisks and replace digits with asterisks
var val = this.value.replace(/[^\d\*]/g, '').replace(/\d/g,'*');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2848 次 |
| 最近记录: |