Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Закрытие pop-up после отправки формы заказа звонка (https://javascript.ru/forum/jquery/70445-zakrytie-pop-up-posle-otpravki-formy-zakaza-zvonka.html)

Nexus 05.09.2017 16:54

Цитата:

Сообщение от maxg5
Получается не правильный селектор для поиска форма задан? Какой тогда селектор задавать?

на странице действительно существует тег с классами «wpcf7-form» и «sent»?
Код выполняется запускается загрузки DOM?

Nexus 05.09.2017 17:04

maxg5, не обратил внимание на ссылку в первом посту.

jQuery(function(){
	jQuery('form.wpcf7-form').submit(function(e){
		e.preventDefault();
		
		jQuery.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('.emodal-overlay').click();//Скрываю модальное окно
				}, 2000); // здесь закрывается модальное окно через 3 секунды
			},
			complete: function(data) {
				$form.each(function() {
					this.reset(); // или так очищается форма методом .reset()
				});
			},
		});
	});
});

maxg5 05.09.2017 18:01

Nexus,
Спасибо!
Все работает. Но видимо есть какая то несовместимость ajax и WordPress.
Не пойму как решить проблему.
Окно закрывается даже если форма не была отправлена. Т.е. если есть не заполненные поля. Как мне кажется часть кода не работает.
Консоль ругается на эту строку и выдает ошибку - Uncaught ReferenceError: form is not defined:
form.each(function() {

Я прогугил, не совсем понял как решить проблему.

maxg5 05.09.2017 18:22

Заменил строку:
form.each(function() {

на строку
jQuery("form").each(function() {

Ошибка исчезла из консоли.
Но окно так же закрывается если форма не было отправлена.

Nexus 06.09.2017 09:45

maxg5, замените опцию, передаваемую методу ajax jQ
success:function(data){
	try{
		jQuery('.loading').fadeOut(function() {
			jQuery(this).remove();
		}); //прячется gif-ка какая-нибудь
		
		if(typeof data=='string') 
			data=JSON.parse(data);
		
		if(!!data.status && data.status=='validation_failed')
			return;
			
		setTimeout(function() {
			jQuery('.emodal-overlay').click();//Скрываю модальное окно
		}, 2000); // здесь закрывается модальное окно через 2 секунды
	}catch(e){
		console.error(e);
	}
}


Часовой пояс GMT +3, время: 00:45.