Подтвердить что ты не робот

Выполнить действие перед отправкой формы?

У меня есть эта форма 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 только при закрытии, но на самом деле он не работает.

Любые идеи?

4b9b3361

Ответ 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

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