Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.07.2017, 08:06
Новичок на форуме
Отправить личное сообщение для wfjs Посмотреть профиль Найти все сообщения от wfjs
 
Регистрация: 04.01.2016
Сообщений: 6

Пропадает форма после ajaxSucces
Добрый день товарищи программисты! Помогите разобраться с проблемой. Есть форма обратной связи, используется модальное окно fancybox, она через jquery ajax() отправляет данные на файл со скриптом. Все хорошо, данные отправляются, приходит ответ и выполняется то, что указано в свойстве jQuery.ajax succes. Но при этом также сама форма стает display: none. Как можно это предотвратить? Нужно сначала обработать ответ вывести сообщение, а потом пользователь исправляет данные, нажимает отправить и если все хорошо, форма стает display: none. Подскажите как то можно предотвратить скрытие формы несмотря на то, что пришел succes, но результат succes не тот, что нужен, а форма скрывается?

Блок с формой
<div id="feedback">
    <h2 class="feedback_header">Заказать <br/>обратный звонок</h2>
    <form id="f_contact" name="contact" action="#" method="post">
        <label for="f_name">Ваше имя:</label><br>
        <input type="text" id="f_name" class="f_input" name="f_name"><br>
        <label for="f_phone">Ваш телефон:</label><br>
        <input type="text" id="f_phone" class="f_input" name="f_phone"><br>
        <button id="f_send">Заказать звонок</button>
    </form>
<p style="text-align: center;"><strong class="f_msg"></strong></p>
</div>


Код jquery ajax
$(document).ready(function(){
    $(".modalbox").fancybox();
    $("#f_contact").submit(function(){ return false; });
    $("#f_send").on("click", function(){
if($("#f_name").val()!='empty' && $("#f_phone").val()!='empty')
        {
            jQuery.ajax({   
                url: "/ajax/form.php",
                type: "POST", 
                dataType: "json",
                data: "f_name="+$("#f_name").val()+"&f_phone="+$("#f_phone").val(),
                success: function(response) {
                    setTimeout("$(\".f_msg\").text(\"Запрос отправлен!\")", 600);
                    $("#f_contact").fadeOut("fast", function(){
                        setTimeout("$.fancybox.close()", 2500);
                    });
                    
                },
                error: function(req, text, error) { 
                    console.log(req);
                    console.log(text);
                    console.log(error);
                    $(".f_msg").text("Запрос не отправлен!");
                }
            });    
            
        } else {
            $(".f_msg").text("Заполните все поля!");    
        }
});
});
Ответить с цитированием
  #2 (permalink)  
Старый 25.07.2017, 08:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от wfjs
setTimeout("$(\".f_msg\").text(\"Запрос отправлен!\")", 600);
Это зачем?

Сообщение от wfjs
$("#f_contact").fadeOut("fast", function(){
Это и скрывает форму.
Ответить с цитированием
  #3 (permalink)  
Старый 25.07.2017, 08:20
Новичок на форуме
Отправить личное сообщение для wfjs Посмотреть профиль Найти все сообщения от wfjs
 
Регистрация: 04.01.2016
Сообщений: 6

показалось, что форма скрывается раньше, чем появляется текст и я подумал, что это происходит где-то в другом месте))) . Большое спасибо!

Сообщение от laimas Посмотреть сообщение
Это зачем?
сделал чтобы текст появлялся с задержкой
Ответить с цитированием
  #4 (permalink)  
Старый 25.07.2017, 08:20
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от wfjs
сделал чтобы текст появлялся с задержкой
Зачем?
Ответить с цитированием
  #5 (permalink)  
Старый 25.07.2017, 08:42
Новичок на форуме
Отправить личное сообщение для wfjs Посмотреть профиль Найти все сообщения от wfjs
 
Регистрация: 04.01.2016
Сообщений: 6

Так более красиво выглядело, когда форма исчезает, появляется текст, в общем визуально показалось, что так выглядит лучше
Ответить с цитированием
  #6 (permalink)  
Старый 25.07.2017, 08:48
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от wfjs
Так более красиво выглядело, когда форма исчезает, появляется текст
Для этого показывать текст нужно после окончания fadeOut:

$("#f_contact").fadeOut("fast", function(){
     $.fancybox.close();
     //и показать сообщение
});


к чему куча таймеров? Не знаю что в этом красивого, но "посмотреть мультик" и только потом узнать, что запрос завершился удачно, это уже мазохизм.
Ответить с цитированием
  #7 (permalink)  
Старый 25.07.2017, 08:58
Новичок на форуме
Отправить личное сообщение для wfjs Посмотреть профиль Найти все сообщения от wfjs
 
Регистрация: 04.01.2016
Сообщений: 6

это все из-за неопытности, костыли, грабли, мультики, ты прав laimas таймер здесь лишний, спасибо за помощь!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
контактная форма исчезает после отправки сообщения( gumapumba Общие вопросы Javascript 3 16.12.2013 22:29
html форма вывод из поля vinovachuk Элементы интерфейса 5 14.01.2013 04:24
Повернуть изображение после его загрузки (jquery) art_maestro jQuery 0 13.09.2012 21:50
ищу DatePicker с временем, списком выбора месяца и возможностью смены месяца после вы Kri0-Gen jQuery 3 10.07.2012 16:07
После $.ajax (success) пропадает кнопка.... Jnas AJAX и COMET 3 30.06.2012 22:07