Настройка делегатов событий в подключаемом модуле проверки jQuery

В настоящее время я настраиваю подключаемый модуль проверки jQuery для использования в нашем проекте.

По умолчанию некоторые события автоматически настраиваются для обработки. т.е. включение/выключение фокуса, события нажатия клавиш на всех входах, проверка срабатывания. Я хочу, чтобы он срабатывал только при нажатии кнопки отправки.

Похоже, что эта функция встроена в подключаемый модуль, что затрудняет ее выполнение (без изменения кода подключаемого модуля, а не того, что я хочу делать).

Я нашел вызовы функции eventDelegate в методе прототипа кода плагина:

        $(this.currentForm)
            .validateDelegate(":text, :password, :file, select, textarea", "focusin focusout keyup", delegate)
            .validateDelegate(":radio, :checkbox, select, option", "click", delegate);

Когда я удаляю эти строки из плагина, я получаю свой результат, однако я бы предпочел сделать что-то вне плагина, чтобы добиться этого.

Кто-нибудь может мне помочь? Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Я искал Google с небольшим успехом.

Спасибо

EDIT: я в основном пытаюсь проверить форму только тогда, когда запускается событие отправки. По умолчанию подключаемый модуль проверяет каждый раз, когда фокус теряется в элементе управления вводом.


person Russell    schedule 04.05.2010    source источник


Ответы (1)


Нашел ответ. Он был (спрятан?) как часть опций в методе проверки.

См. параметры onfocusout и т. д. на этой странице: http://docs.jquery.com/Plugins/Validation/validate#options

который я могу установить в false.

Вот мой код, который устанавливает мой валидатор (надеюсь, другие найдут это полезным):

$(document).ready(function() {
    $("form").each(function() {
        $(this).validate({
            validateDelegate: function() { },
            onsubmit: true,
            onkeydown: false,
            onkeyup: false,
            onfocusin: false,
            onfocusout: false,

            errorContainer: "#PanelError",
            errorLabelContainer: "#PanelError ul",
            wrapper: "li",
            ignoreTitle: true,
            errorClass: "Error",

            highlight: function(element, errorClass, validClass) {
                $(element).addClass(errorClass).removeClass(validClass);
                $(element.form).find("#" + element.id)
                        .addClass(errorClass);
            },
            unhighlight: function(element, errorClass, validClass) {
                $(element).removeClass(errorClass).addClass(validClass);
                $(element.form).find("#" + element.id)
                        .removeClass(errorClass);
            }
        });
    });
});
person Russell    schedule 04.05.2010