Проверка jQuery - метод проверки подлинности ядра с использованием перезаписи

Я использую плагин jQuery Validation.

Я перезаписал требуемое правило, так как моя зависит от какого-то пользовательского условия, как в следующем:

$.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

Вы не переопределяете его, но добавляете к нему еще один метод. Чтобы отменить его, попробуйте следующее:

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

    return someCondition && value != null;
}

Ответ 2

Вы можете использовать $.extend для этого:

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