Закрытие pop-up после отправки формы заказа звонка
Всем доброго времени суток!
На этой странице есть кнопка вызова pop-up с формой обратной связи.(Оставьте заявку) Сделал это при помощи Contact Form 7 + Easy Modal. После отправки окно не закрывается. А нужно что бы закрывалось через 2 секунды. Нашел нужный мне скрипт: $('#твоя-форма').submit(function() { $.ajax({ type : 'POST', url: $ajax_url, data : { name: $name_value , email: $email_value, message: $message_value, subject: $subject_value, task: 'sendmail' }, beforeSend: function(data){ $('#submit').before('<div class="loading"></div>'); }, success: function (data){ $('.loading').fadeOut(function(){ $(this).remove(); }); //прячется gif-ка какая-нибудь setTimeout(function(){ document.forms['твоя-форма'].reset(); // очищается форма методом .reset() $('#myModal').modal('hide'); }, 3000); // здесь закрывается модальное окно через 3 секунды }, complete:function(data){ $form.each(function(){ this.reset(); // или так очищается форма методом .reset() }); }, }); return false; }); Пытаюсь применить к своему сайту, но скрипт не работает - окно не закрывается. jQuery('.wpcf7-form sent').submit(function() { $.ajax({ type : 'POST', url: $ajax_url, data : { name: $name_value , email: $email_value, message: $message_value, subject: $subject_value, task: 'sendmail' }, beforeSend: function(data){ $('#submit').before(''); }, success: function (data){ $('.loading').fadeOut(function(){ $(this).remove(); }); //прячется gif-ка какая-нибудь setTimeout(function(){ document.forms['.wpcf7-form sent'].reset(); // очищается форма методом .reset() $('#').modal('hide'); }, 2000); // здесь закрывается модальное окно через 2 секунды }, complete:function(data){ $form.each(function(){ this.reset(); // или так очищается форма методом .reset() }); }, }); return false; }); |
Цитата:
|
Цитата:
Смотри документацию к своей библиотеке и применяй её методы. PS. Про селектор забыл написать: он вообще бомба. Я не знаю, что бедный jQ должен вернуть, когда ему в кач-ве селектора единственную решетку передают. |
Скорее всего я где то селектор не тот передаю.
Easy Modal это не библиотека, а плагин для WordPress. Пробовал за место решетки передавать в качестве селектора .eModal-1 Все равно не работает. |
Цитата:
Цитата:
Ну или так: $('.eModal-1').hide(); |
Nexus,
Цитата:
Цитата:
Не понятно какие селекторы нужно передавать в строках 1, 13, 19, 20 |
Цитата:
1. Запрос вовсе не отправляется к серверу; 2. Запрос фейлится; 3. В этой строке ошибка: document.forms['.wpcf7-form sent'].reset(); 4. Элемента с классом «.eModal-1» нет на странице. Я бы пункт 3 сначала смотрел, там вообще хрень какая-то написана. https://learn.javascript.ru/form-elements И если используешь jQ, то почему не использовать его всегда? $('.wpcf7-form.sent').get(0).reset(); PS. в консоли браузера много интересных вещей пишется, она открывается по нажатию на клавишу F12, вкладка «Console». |
Nexus,
Цитата:
<p><a href="#" class="eModal-1"><img class="but" src="/wp-content/themes/clinico/img/but.png" /></a></p> Это получается класс для вызова модального окна. $('.wpcf7-form.sent').get(0).reset(); Здесь нужно использовать селектор .wpcf7-form.sent или #4018? это не совсем понятно. #4018 - так именуется нужная форма в шорт коде для WordPress. А .wpcf7-form.sent есть в коде страницы. Переписал код используя везде jQ. <script> jQuery('#4018').submit(function() { $.ajax({ type : 'POST', url: $ajax_url, data : { name: $name_value , email: $email_value, message: $message_value, subject: $subject_value, task: 'sendmail' }, beforeSend: function(data){ jQuery('#submit').before(''); }, success: function (data){ jQuery('.loading').fadeOut(function(){ jQuery(this).remove(); }); //прячется gif-ка какая-нибудь setTimeout(function(){ jQuery('#4018').get(0).reset(); // очищается форма методом .reset() jQuery('.eModal-1').hide(); }, 2000); // здесь закрывается модальное окно через 3 секунды }, complete:function(data){ $form.each(function(){ this.reset(); // или так очищается форма методом .reset() }); }, }); return false; }); </script> В консоль смотрел. Касательно данного скрипта ошибок нету. |
maxg5, перепиши свой код так, отправь форму и смотри, что в консоль пишется.
function _log(){ console.log.apply(console,arguments); } _log($('#4018').size()?'Form found':'Form not found'); jQuery('#4018').submit(function() { _log('Form. Submit'); $.ajax({ type: 'POST', url: $ajax_url, data: { name: $name_value, email: $email_value, message: $message_value, subject: $subject_value, task: 'sendmail' }, beforeSend: function(data) { _log('Ajax. BeforeSend'); jQuery('#submit').before(''); }, success: function(data) { _log('Ajax. Success'); jQuery('.loading').fadeOut(function() { jQuery(this).remove(); }); //прячется gif-ка какая-нибудь setTimeout(function() { _log('Ajax. Success timeout'); _log('Modal object',$('.eModal-1')); jQuery('#4018').get(0).reset(); // очищается форма методом .reset() jQuery('.eModal-1').hide(); }, 2000); // здесь закрывается модальное окно через 3 секунды }, complete: function(data) { _log('Ajax. Complete'); $form.each(function() { this.reset(); // или так очищается форма методом .reset() }); }, }); return false; }); Цитата:
$('#4018');//Поиск элемента с id="4018" $('.wpcf7-form.sent');//Поиск элемента с class*="wpcf7-form sent" Если на странице нет элемента с id 4018, то нужно использовать поиск по классу. |
Nexus,
Цитата:
Я заменил id 4018 на .wpcf7-form.sent - в консоле так же пишется Form not found. Получается не правильный селектор для поиска форма задан? Какой тогда селектор задавать? |
Часовой пояс GMT +3, время: 00:01. |