Автоматическое закрытие окна FancyBox
Есть форма обратной связи в модальном окне FancyBox.
Нужно сделать что бы после успешной отправки заявки это модальное окно закрывалось автоматически. Я сделал закрытие через setTimeout. Но окно закрываться при нажатии на кнопку Отправить вне зависимости от того отправилась форма или нет. Помогите пожалуйста исправить. <script> $(document).ready(function(){ /*ПРОВЕРЯЕМ НАЖАТА ЛИ КНОПКА ОТПРАВКИ*/ $('#btn_submit').click(function(){ // собираем данные с формы var user_name = $('#name').val(); var user_email = $('#email').val(); var user_phone = $('#phone').val(); var text_comment = $('#text_comment').val(); // отправляем данные $.ajax({ url: "/php/send.php", // куда отправляем type: "post", // метод передачи data: { // что отправляем "name": user_name, "email": user_email, "phone": user_phone, "text_comment": text_comment }, error:function(){$("#erconts").html("Произошла ошибка!");}, /* если произойдет ошибка в элементе с id erconts выведится сообщение*/ beforeSend: function() { $("#erconts").html("Отправляем данные..."); }, success: function(result){ /* В случае удачной обработки и отправки выполнится следующий код*/ $('#erconts').html(result); setTimeout($.fancybox.close(), 2000); console.log("ntcn"); } }); }); }); </script> |
Цитата:
|
Цитата:
setTimeout($.fancybox.close, 2000); |
Цитата:
|
maxg5,
может так повезёт :) setTimeout(function() { $.fancybox.close() }, 2000); |
рони, да у него скорее ответ приходит практически сразу, поэтому и кажется.
|
Так окно так же не закрывается плюс к этому идет задержка на отправку в количестве секунд указанных в sleep(). Возможно я что то не так оформил.
<?php /*ПОМЕЩАЕМ ДАННЫЕ ИЗ ПОЛЕЙ В ПЕРЕМЕННЫЕ*/ $name = $_POST["name"]; $email = $_POST["email"]; $phone = $_POST["phone"]; $text_comment = $_POST["text_comment"]; /*ЗДЕСЬ ПРОВЕРЯЕМ ЕСЛИ ХОТЯ БЫ ОДНО ИЗ ПОЛЕЙ НЕ ЗАПОЛНЕНО МЫ ВОЗВРАЩАЕМ СООБЩЕНИЕ*/ if($name=="" or $email=="" or $phone=="" or $text_comment==""){ echo "Заполните все поля"; } else{ /*ЕСЛИ ВСЕ ПОЛЯ ЗАПОЛНЕНЫ НАЧИНАЕМ СОБИРАТЬ ДАННЫЕ ДЛЯ ОТПРАВКИ*/ $to = "maxg5@yandex.ru"; /* Адрес, куда отправляем письма*/ $subject = "Письмо с обратной связи"; /*Тема письма*/ $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=utf-8\r\n"; $headers .= "From: <test@mail.ru>\r\n";/*ОТ КОГО*/ /*ВО ВНУТРЬ ПЕРЕМЕННОЙ $message ЗАПИСЫВАЕМ ДАННЫЕ ИЗ ПОЛЕЙ */ $message .= "Имя пользователя: ".$name."\n"; $message .= "Почта: ".$email."\n"; $message .= "Телефон: ".$phone."\n"; $message .= "Сообщение: ".$text_comment."\n"; /*ДЛЯ ОТЛАДКИ ВЫ МОЖЕТЕ ПРОВЕРИТЬ ПРАВИЛЬНО ЛИ ЗАПИСАЛИCM ДАННЫЕ ИЗ ПОЛЕЙ*/ $send = mail($to, $subject, $message, $headers); /*ЕСЛИ ПИСЬМО ОТПРАВЛЕНО УСПЕШНО ВЫВОДИМ СООБЩЕНИЕ*/ if ($send == "true") { echo "Ваше сообщение отправлено. Мы ответим вам в ближайшее время.\r\n"; } /*ЕСЛИ ПИСЬМО НЕ УДАЛОСЬ ОТПРАВИТЬ ВЫВОДИМ СООБЩЕНИЕ ОБ ОШИБКЕ*/ else { echo "Не удалось отправить, попробуйте снова!"; } } sleep(3); ?> <script type="text/javscript"> $.fancybox.close </script> |
setTimeout(function() { $.fancybox.close() }, 2000); Так окно закрывается в независимости от того отправилась форма или нет. |
Цитата:
И если мне не изменяет память, то у FancyBox есть свой метод Ajax. |
Цитата:
|
Часовой пояс GMT +3, время: 15:03. |