Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.12.2019, 13:32
Аспирант
Отправить личное сообщение для maxg5 Посмотреть профиль Найти все сообщения от maxg5
 
Регистрация: 16.08.2016
Сообщений: 89

Автоматическое закрытие окна 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>
Ответить с цитированием
  #2 (permalink)  
Старый 07.12.2019, 13:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от maxg5
setTimeout($.fancybox.close(), 2000);
уберите скобки
Ответить с цитированием
  #3 (permalink)  
Старый 07.12.2019, 13:58
Аспирант
Отправить личное сообщение для maxg5 Посмотреть профиль Найти все сообщения от maxg5
 
Регистрация: 16.08.2016
Сообщений: 89

Сообщение от рони Посмотреть сообщение
уберите скобки
Убрал скобки, но теперь модальное окно не закрывается совсем. В независимости от того отправлена заявка или нет.Получилось так:
setTimeout($.fancybox.close, 2000);
Ответить с цитированием
  #4 (permalink)  
Старый 07.12.2019, 14:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от maxg5
но теперь модальное окно не закрывается совсем.
По этому адресу "/php/send.php" написать sleep(5);, через 5 секунд будет закрыто, и просто так: $.fancybox.close.
Ответить с цитированием
  #5 (permalink)  
Старый 07.12.2019, 14:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

maxg5,
может так повезёт
setTimeout(function() {
  $.fancybox.close()
}, 2000);
Ответить с цитированием
  #6 (permalink)  
Старый 07.12.2019, 14:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

рони, да у него скорее ответ приходит практически сразу, поэтому и кажется.
Ответить с цитированием
  #7 (permalink)  
Старый 07.12.2019, 14:15
Аспирант
Отправить личное сообщение для maxg5 Посмотреть профиль Найти все сообщения от maxg5
 
Регистрация: 16.08.2016
Сообщений: 89

Так окно так же не закрывается плюс к этому идет задержка на отправку в количестве секунд указанных в 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>
Ответить с цитированием
  #8 (permalink)  
Старый 07.12.2019, 14:18
Аспирант
Отправить личное сообщение для maxg5 Посмотреть профиль Найти все сообщения от maxg5
 
Регистрация: 16.08.2016
Сообщений: 89

setTimeout(function() {
  $.fancybox.close()
}, 2000);


Так окно закрывается в независимости от того отправилась форма или нет.
Ответить с цитированием
  #9 (permalink)  
Старый 07.12.2019, 14:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от maxg5
плюс к этому идет задержка на отправку в количестве секунд указанных в sleep()
Я предполагал, что ответ сразу приходит ибо "Но окно закрываться при нажатии на кнопку Отправить", поэтому и можно проверить задержкой на сервере. А теперь что не закрывается - "Так окно так же не закрывается"?

И если мне не изменяет память, то у FancyBox есть свой метод Ajax.
Ответить с цитированием
  #10 (permalink)  
Старый 07.12.2019, 14:25
Аспирант
Отправить личное сообщение для maxg5 Посмотреть профиль Найти все сообщения от maxg5
 
Регистрация: 16.08.2016
Сообщений: 89

Сообщение от laimas Посмотреть сообщение
Я предполагал, что ответ сразу приходит ибо "Но окно закрываться при нажатии на кнопку Отправить", поэтому и можно проверить задержкой на сервере. А теперь что не закрывается - "Так окно так же не закрывается"?

И если мне не изменяет память, то у FancyBox есть свой метод Ajax.
Как это реализовать? Можно пожалуйста пример кода.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрытие модального окна по клику Stas1985 Элементы интерфейса 6 29.09.2019 18:02
Dojo dialog автоматическое масштабирование диалогового окна и содержимого Aleksey81 Dojo toolkit 0 09.10.2016 23:43
FancyBox: Размер модального окна больше размеров окна браузера (высота), как сделать? clgs Events/DOM/Window 3 22.01.2015 17:13
Автоматическое закрытие окна qwe88 Общие вопросы Javascript 0 14.06.2014 14:22
Событие на закрытие окна браузера пользователем Stilus Events/DOM/Window 3 18.01.2014 00:42