Jquery允许数字和破折号

时间:2013-08-19 03:38:12

标签: jquery numbers character hyphen

我有一个脚本隐藏了社会安全号码的最后四个数字。我需要调整它以允许破折号并更改数学以显示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

提前感谢您的帮助!

1 个答案:

答案 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