Возврат значения функции после завершения анимации (затухания)
Ребята, вопрос следующий:
есть джейквери-функция сабмита формы. внутри функции последовательно через блоки 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, время: 00:02. |