2011-02-04 61 views
12

我正在使用jQuery验证插件。jQuery验证 - 覆盖核心验证方法

我已覆盖所需规则自矿取决于一些自定义条件如以下:

$.validator.addMethod("required", function(value, element) { 
    console.log("required", element); 

    return someCondition && value != null; 
}, "This is is required."); 

当窗体然而验证,我看到"required"为每个元件意味着函数印刷两次被称为两次。只要将方法名称更改为"myRequired"并添加以下类规则,该函数就会被调用一次。

$.validator.addClassRules({ 
    required : { 
     myRequired: true 
    } 
}); 

看来核心所需的方法仍然完好无损,并且即使我添加了一个名称相同的方法也会被调用。无论如何要彻底改写核心规则方法吗?

+1

哪些验证插件您使用。 – Hussein 2011-02-05 00:00:08

回答

18

你不是重写它,而是添加另一种方法。要覆盖它,试试这个:

$.validator.methods.required = function(value, element, param) { 
    console.log("required", element); 

    return someCondition && value != null; 
} 
1

您可以使用$.extend做到这一点:

$.extend($.validator, { 
    required: function(value, element) { 
     console.log("required", element); 
     return someCondition && value != null; 
    } 
})