Получение возвращаемого значения от submit () через jquery - PullRequest
2 голосов
/ 26 февраля 2012

У меня есть страница с несколькими формами.Каждая форма имеет свою собственную кнопку Сохранить, которая проверяет и отображает сообщения об ошибках, используя .ajax () для публикации (не обычный метод публикации).У меня также есть кнопка Далее за пределами форм, которая перехватывается обработчиком jQuery click ().Эта функция проходит через каждую форму и вызывает $ (formname) .submit () для каждого.

В конечном итоге мне нужно знать, прошли ли отдельные формы проверку, чтобы определить, должно ли произойти перенаправление.Я добавил, return false; в операторе else проверки валидации в функции submit, но я не вижу, как его получить.

Наличие alert($(this).submit()); просто возвращает объект, а не возвращаемое значение.Не перекодируя весь почтовый индекс $ .ajax для каждой формы, могу ли я узнать, не удалось ли отправить ?? ?? 1007 *

//next button click
$('#savenext').click(function () {
    var finalsuccess;
    $('.record_form').each(function (index) {
        alert($(this).submit()); //I want this to be true or false
    });
//forms each have their own submit handler
$(formname).submit(function (e) {
    e.preventDefault();
    var form = $(this);

    if($(form).valid()) { //validate the form, return false if it is not valid. 
    //Post the form to the action if it passes
        $.ajax({
            url: form.attr('action'),
            type: "POST",
            dataType: "text json",
            data: form.serialize(),
            success: function (response) {
                //does some success messages here
            },
        });
    }
    else {
        return false;
        }
});

Спасибо

Ответы [ 2 ]

3 голосов
/ 09 марта 2012

В случае, если кому-то нужно знать, я не нашел способа заставить отправку вернуть значение успеха. В конце я изменил запись ajax на async: false, поместил ее в функцию, которая возвращала логический набор по событию success или error записи ajax. Не так быстро из-за последовательности обращений к серверу, но я добавлю диалог загрузки, чтобы помочь с этим.

0 голосов
/ 13 апреля 2019

Я нашел этот вопрос, когда искал решение своей проблемы, и не смог найти ничего, что сработало. В итоге мне пришлось «зацепить» функцию отправки jQuery, приведенный ниже код на случай, если у кого-то тоже возникнет такая же проблема.

// override jQuery.submit() so that it returns true/false rather than a jQuery object
var original_submit = jQuery.fn.submit;
jQuery.fn.submit = function() {
    // we are only interested in the .submit() trigger calls
    if (arguments.length == 0)
    {
        var ret = $(this).triggerHandler("submit");

        // assume true unless we specifically returned false
        return ret === false ? false : true;
    }

    // fallback to original function
    return original_submit.apply(this, arguments);
};
...