Внутренний JQuery document.ready, чтобы переопределить внешний - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть общий внешний файл document.ready() с действием $('form').submit(), однако я хочу переопределить это действие из одного из моих файлов, которые включают в себя document.ready().

Другими словами, я хочу, чтобы мой внутренний document.ready() провел дополнительные проверки в форме, прежде чем $('form').submit() заработает.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Мой подход будет:

var formActions = new function() {

    this.form = $('form');

    this.doStuff = function() {

        //Do Stuff  

        //If you got more than one form
        $.each("this.form", function(i, v) {
            //PlayWithForm
        })

        this.submit();
    };

    this.submit = function () {

        this.form.trigger( "submit");
    }

}

$.fn.ready(function() {
    formActions.doStuff();
})
0 голосов
/ 15 февраля 2012

В вашем внутреннем коде вы можете попытаться остановить немедленное распространение события submit:

$(function () {
    $('form').on('submit.immediate', function (event) {
        event.stopImmediatePropagation();
    });
});

Затем, если вы хотите, чтобы форма снова могла быть отправлена, вы можете просто удалить эту привязку:

$('form').off('submit.immediate');

При этом будет удален только обработчик события submit, связанный с пространством имен immediate, поэтому другие привязки останутся без изменений.

Вполне возможно, я не совсем понимаю вашу проблему. Возможно, вам просто нужно связать обработчик событий с формами, которые прекращают их отправку до тех пор, пока вы не решили отправить их:

$(function () {
    $('form').on('submit.immediate', function (event) {
        event.preventDefault();
    });
});

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

Обратите внимание, что .on() / .off() являются новыми в jQuery 1.7 и в использованных выше случаях совпадают с .bind() / .unbind(): http://api.jquery.com/on, http://api.jquery.com/off

Документы для event.stopImmediatePropagation():

Сохраняет выполнение остальных обработчиков и предотвращает событие от всплывающего дерева DOM.

Источник: http://api.jquery.com/event.stopImmediatePropagation/

...