<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();
, но форма не отправляет (т.е. страница не обновляется). почему это?
спасибо!
Событие 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 и происходит обычное поведение браузера. Затем вы также отделили логику от разметки в виде обработчика событий.
Надеюсь, это имеет больше смысла.
Я добавил невидимую кнопку отправки в форму, и вместо вызова функции submit () я вызвал функцию click () для кнопки отправки =)
кнопка:
безумный способ обойти отправку формы:
$ ("# alternateSubmit"). Click ();
Похоже, у вас submit происходит в обратном вызове, который запускается только после ajax-поста в обработчике onclick.
Другими словами, когда вы нажимаете submit, браузер должен сначала выйти и выполнить действие checkForReplace.
его вызов Ajax, почему вам нужно отправить форму, когда вы уже обрабатываете ее с помощью ajax. Вы можете перейти со страницы, используя
window.location.href = "/somewhere/else";