0

我有一个脚本可以隐藏除社会安全号码的最后四个数字之外的所有内容。我需要对其进行调整以允许破折号并更改数学以显示 11 位字符串的最后四个,而不是 9 位字符串。这是字符津贴所在的行:

$this.val($this.val().replace(/^\d{5}/, '*****'));

这是jsfiddle: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

提前感谢您的帮助!

4

1 回答 1

0

尝试

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] : '')
    });
};

演示:小提琴

于 2013-08-19T03:48:24.937 回答