Автоматическое закрытие окна 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, время: 03:44. |