JQuery CreditCard验证器扩展

时间:2012-10-05 20:32:26

标签: jquery jquery-plugins jquery-validate

我正在使用Jquery Validator 我的挑战是当用户更新他们的个人资料信息时。但没有改变他们的CC。

在更新页面中,我只显示4 * * ** * 1111

因此,如果使用以下代码片段,验证将失败

$("#profile-form").validate({
      rules: {
             ccnum: { required: true, creditcard: true },
             exp_year: { ccDate: true},
             exp_month: { ccDate: true}
             }

但是如果用户输入一个新的CC号码,它就会按照它想要的那样做。

所以我的问题是,如果用户想要更新其他内容并且不接触CC卡,我该怎么办?

有任何想法/建议吗?

1 个答案:

答案 0 :(得分:1)

如果元素的值发生了变化,我会编写一个调用信用卡验证方法的新规则:

$.validator.addMethod("creditcard-custom", function (value, element) {
    return this.optional(element) || 
        element.value === element.defaultValue ||
        $.validator.methods.creditcard.call(this, value, element);
}, $.validator.messages.creditcard);

<强>用法

$("#myform").validate({
    rules: {
        ccnum: {
            required: true,
            'creditcard-custom': true
        },
        exp_year: {
            ccDate: true
        },
        exp_month: {
            ccDate: true
        }
    }
});

示例: http://jsfiddle.net/andrewwhitaker/kqczf/2/