Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Подождем сворачивание формы (https://javascript.ru/forum/jquery/44580-podozhdem-svorachivanie-formy.html)

zzzzzz 25.01.2014 00:57

Подождем сворачивание формы
 
Здравствуйте.

По задумке перед сабмитом формы я ее плавно сворачиваю
$('#form').slideUp();

и потом
return true;

чтобы форма ушла.

Отправка формы происходит сразу, не подождав пока закончится анимация

Как исправить? Заранее спасибо.

danik.js 25.01.2014 06:34

Цитата:

Сообщение от zzzzzz
и потом
return true;

чтобы форма ушла.

Хах. Хитрый ты )) Функция должна вернуть результат (true или false) сразу же. Нельзя вернуть его "потом". Это основы программирования (любой язык, не только JS). Это даже невозможно написать никак в коде. То что ты пытаешься - если присмотришься - совсем другое. Например ты делаешь возврат из callback-функции, вызываемой по окончании анимации. Этот возврат происходит в библиотеку jQuery (а не в нативный код отправки формы браузером) и она никакого результата вызова не ожидает.
Возвращай сразу false. А по окончании анимации делай form.submit()
Но это вобще фиговый вариант: зачем юзера заставлять ждать ненужную ему анимацию? Отправляй лучше форму сразу через ajax.

zzzzzz 27.01.2014 13:36

Я что-то делаю неправильно
$('#form').slideUp('slow' , function(){

        $('#form form')[0].submit();
            
});

рони 27.01.2014 14:06

zzzzzz,
:write:
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script>
    $(function () {
    var f = $("#x");
    f.on("submit", function () {
        f.slideUp("slow", function () {
            f.off("submit").submit()
        });
        return false
    })
});
  </script>
</head>
<body>
    <form id="x" action="http://javascript.ru/forum/">
        <input name="">
        <input name="" type="submit" value="go">
    </form>
</body>
</html>


Часовой пояс GMT +3, время: 05:00.