Выполнить действие перед отправкой формы?
У меня есть эта форма HTML с идентификатором, и я привязал этот id к функции отправки. То, что я хочу, - это когда пользователь нажимает кнопку "Отправить", всплывающее окно появляется, как модальная коробка, благодарная им. И только после того, как они щелкнут по экрану или когда модальный ящик закрывается, когда я хочу, чтобы форма отправляла и обновляла страницу.
Но то, как у меня сейчас, похоже, что оно обновится, несмотря ни на что. Я использую причудливый всплывающий плагин для модального блока.
<form action="submit-comment.php" method="post" id="form">
<input type="text" name="comment" />
<input type="submit" name="submit" value="Submit" />
</form>
jQuery("#form").submit(function() {
jQuery.fancybox('<div class="box">Some content</div>', {
'onClosed' : function() { return true; }
}
});
});
Как вы можете видеть, я пытаюсь сказать, что он возвращает true только при закрытии, но на самом деле он не работает.
Любые идеи?
Ответы
Ответ 1
Попробуйте следующее:
jQuery("#form").submit(function(e) {
var self = this;
e.preventDefault();
jQuery.fancybox('<div class="box">Some amazing wonderful content</div>', {
'onClosed' : function() {
self.submit();
}
});
return false; //is superfluous, but I put it here as a fallback
});
javascript является асинхронным, поэтому вы не можете задержать оператор return.
UPDATE
Чтобы сделать так, чтобы код выше работал, измените кнопку name
кнопки отправки на что-то еще, например:
<input type="submit" name="submit_me" value="Submit" />
Ответ 2
(ответ на вопрос Рика под ответом Нила: "любым другим способом? Потому что у меня нет прямого доступа к этому html" )
Если вам по какой-то причине нужна кнопка отправки, чтобы ID = "отправить" и не может использовать метод form.submit(потому что он ссылается на кнопку ввода [type = submit] #submit], вы можете сделать это:
$('<form>')[0].submit.call(form); //jQuery
//OR:
document.createElement('form').submit.call(form); //pure HTML w/o any framework
то есть. создать новую пустую форму и использовать свой метод отправки, чтобы вызвать ее в рамках вашей собственной формы