Возврат значения функции после завершения анимации (затухания)
Ребята, вопрос следующий:
есть джейквери-функция сабмита формы. внутри функции последовательно через блоки if/else if/else проводится проверка элементов и значений формы, если что-то некорректно, то выводится блок с сообщением (вывод через fadeIn) и возвращается false функции, т. е. return false. В самом последнем блоке else если все остальные проверки пройдены я хочу увести (затуханием) блок с сообщением, если таковой был вызван fadeOut и после того как анимация завершится - вернуть true, чтобы пошел сабмит на сервер. Соотв-но пишу последовательно: .fadeOut("slow"); return true; Но, в реальности, как только я нажимаю сабмит - отправка данных происходит сразу же, т. е. анимация (затухание) не успевает отрабатывать. Пытался после fadeOut ставить alert - алерт вызывается, но анимация по прежнему не отрабатывает. Подскажите пожалуйста наиболее корректный метод решения данной проблемы. Предполагаю, что можно решить ее таймаутом, но это кажется мне каким-то жутким костылем. Заранее благодарю. |
Обработчик onsubmit требует ответа немедленно, он не будет ждать, когда отработает ваша функция анимации. Первое, что пришло в голову:
var forcedSubmit = false;
$('form').submit(function() {
//* пора отправить форму
if(forcedSubmit) {
return true;
}
if(условие1) {
//* условие для отправки формы не выполняется
//* что-то делаем
}
...
//* тут целая куча ваших условий
...
else {
//* условие для отправки формы выполняется
$('div').fadeIn(5000, function() {
forcedSubmit = true;
$('form').submit();
});
}
return false;
});
|
Спасибо!
Принял к сведению ваш вариант. А можете, пожалуйста, подсказать - почему так происходит? Могу только подозревать, что причины в асинхронности или обработке функций в JS, но точные причины в данной ситуации мне к сожалению непонятны. |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 08:56. |