掩码在密钥上添加jquery

时间:2015-11-24 17:38:31

标签: jquery mask

我想在输入(密钥向上)上添加掩码以检查用户的信用卡号。我创建了这个脚本,但它不能很好地工作。

function card_checker(cardinput) {
    var cardno_american = /^(?:3[47][0-9]{13})$/;
    var cardno_visa = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;
    var cardno_master = /^(?:5[1-5][0-9]{14})$/;
    var cardno_discover = /^(?:6(?:011|5[0-9][0-9])[0-9]{12})$/;
    var cardno_dinner = /^(?:3(?:0[0-5]|[68][0-9])[0-9]{11})$/;
    var cardno_jcb = /^(?:(?:2131|1800|35\d{3})\d{11})$/;
    if (cardinput.match(cardno_visa)) {
        return 1;
    } else if (cardinput.match(cardno_master)) {
        return 1;
    } else if (cardinput.match(cardno_discover)) {
        return 2;
    } else if (cardinput.match(cardno_american)) {
        return 3;
    } else if (cardinput.match(cardno_jcb)) {
        return 6;
    } else {
        return 0;
    }
}
var oldVal;
$('#card_number').on('keypress paste textInput input', function() {
    var res = card_checker($('#card_number').val());
    var val = this.value;
    console.log(res);
    if ((val != oldVal) && (val.length == 1) && res == 3) {
        $(this).mask('9999-9999-9999-999', {
            "translation": {
                "#": null
            }
        });
    } else {
        $(this).mask('9999-9999-9999-9999', {
            "translation": {
                "#": null
            }
        });
    }
    oldVal = val;
    $(this).val(oldVal);
});

这不适用于美国运通卡。

1 个答案:

答案 0 :(得分:0)

美国运通卡号码(无连字符)

/^(?:3[47][0-9]{13})$/ // matches the first 2 digit which starts with either 37 or 34 and rest 13 digits

(连字符:xxxx-xxxxxx-xxxxx)

/^3[47]\d\d([\ \-]?)\d{6}\1\d{5}$/