我有一个脚本隐藏了社会安全号码的最后四个数字。我需要调整它以允许破折号并更改数学以显示11位数字符串的最后四个,而不是9位数字符串。这是字符容差的行:
$this.val($this.val().replace(/^\d{5}/, '*****'));
这是jsfidle:http://jsfiddle.net/d5KaJ/45/
这是剧本:
var retrieveValue = function(ev){
var $this = $(this),
val = $this.data('value');
if (val) {
$this.val(val);
}
},
hideValue = function(ev){
var $this = $(this);
$this.data('value', $this.val());
$this.val($this.val().replace(/^\d{5}/, '*****'));
};
$('#field_a7afui').focus(retrieveValue);
$('#field_a7afui').blur(hideValue);
$('#form_hv3hcs').submit(function(ev){
ev.preventDefault();
retrieveValue.call($('#field_a7afui')[0], ev);
alert($('#field_a7afui').val());
hideValue.call($('#field_a7afui')[0], ev);
});
同样,我只是需要它来允许数字和短划线,我需要它来显示11位数的soc sec号码的最后四位数字,例如XXX-XX-XXXX
提前感谢您的帮助!
答案 0 :(得分:1)
尝试
hideValue = function(ev){
var $this = $(this);
$this.data('value', $this.val());
$this.val(function(idx, val){
var mask = val.match(/^(.*?)(\d{4})$/);
return (mask[1] ? mask[1].replace(/\d/g, '*') : '') + (mask[2] ? mask[2] : '')
});
};
演示:Fiddle