jQuery: форма, не отправляющая с $ (“#id”) .submit (), но, отправит с 'отправлять' кнопкой?

<form method="post" action="load_statements.php?action=load" id="loadForm"
                            enctype="multipart/form-data">

это - моя форма, которая выглядит хорошо мне. в той форме я поместил эту кнопку:

<input type="button" name="submit" id="submit" value="Submit" onclick="confirmSubmit()" class="smallGreenButton" />

вот функция, которую это вызывает:

function confirmSubmit() {
    // get the number of statements that are matched
    $.post(
        "load_statements.php?action=checkForReplace",
        {
            statementType : $("#statementType").val(),
            year : $("#year").val()
        },
        function(data) {
            if(data['alreadyExists']) {
                if( confirm("Statements already exist for " + $("#statementType").html() + " " + $("#year").val() +
                    ". Are you sure you want to load more statements with these settings? (Note: All duplicate files will be replaced)"
                )) {
                    $("#loadForm").submit();
                }
            } else {
                $("#loadForm").submit();
            }
        }, "json"
    );
}

и как Вы видите, это звонит $("#loadForm").submit();, но форма не отправляет (т.е. страница не обновляется). почему это?

спасибо!

38
задан Garrett 21 July 2010 в 21:06
поделиться

4 ответа

http://api.jquery.com/submit/

Событие jQuery submit() добавляет слушателя события, которое происходит при отправке формы. Таким образом, ваш код по сути ничего не связывает с событием submit. Если вы хотите, чтобы форма была отправлена, вы используете старый добрый JavaScript document.formName.submit().


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

$('#submit').click( function() {
  // ajax logic to test for what you want
  if (ajaxtrue) { return confirm(whatever); } else { return true;}
});

Если эта функция возвращает true, то это считается успешным нажатием кнопки submit и происходит обычное поведение браузера. Затем вы также отделили логику от разметки в виде обработчика событий.

Надеюсь, это имеет больше смысла.

17
ответ дан 27 November 2019 в 03:03
поделиться

Я добавил невидимую кнопку отправки в форму, и вместо вызова функции submit () я вызвал функцию click () для кнопки отправки =)

кнопка:

безумный способ обойти отправку формы: $ ("# alternateSubmit"). Click ();

4
ответ дан 27 November 2019 в 03:03
поделиться

Похоже, у вас submit происходит в обратном вызове, который запускается только после ajax-поста в обработчике onclick.

Другими словами, когда вы нажимаете submit, браузер должен сначала выйти и выполнить действие checkForReplace.

-1
ответ дан 27 November 2019 в 03:03
поделиться

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

window.location.href = "/somewhere/else";
-3
ответ дан 27 November 2019 в 03:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: