Javascript.RU

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

Замена alert
Здравствуйте,
Возникла необходимость создать на сайте форму обратной связи. Нашел скрипт, работает, но немного не так как хотелось бы.
При нажатии на "отправить" вываливается модальное окно, причем страница не обновляется и при нажатии ОК отправляется письмо на почту, а весь контекст остается в формах. Т.е можно еще раз нажать "отправить" и письмо отправится еще раз. Так вот вопрос, как при удачной отправке сообщения сделать так,чтобы <div> с формами заменялся на <div> с текстом "Отправлено!"?
$(document).ready(function() { // вся магия после загрузки страницы
	$("#ajaxform").submit(function(){ // перехватываем все при событии отправки
		var form = $(this); // запишем форму, чтобы потом не было проблем с this
		var error = false; // предварительно ошибок нет
		form.find('input, textarea').each( function(){ // пробежим по каждому полю в форме
			if ($(this).val() == '') { // если находим пустое
				alert('Заполните поле "'+$(this).attr('placeholder')+'"!'); // говорим заполняй!
				error = true; // ошибка
			}
		});
		if (!error) { // если ошибки нет
			var data = form.serialize(); // подготавливаем данные
			$.ajax({ // инициализируем ajax запрос
			   type: 'POST', // отправляем в POST формате, можно GET
			   url: 'gogogo.php', // путь до обработчика, у нас он лежит в той же папке
			   dataType: 'json', // ответ ждем в json формате
			   data: data, // данные для отправки
		       beforeSend: function(data) { // событие до отправки
		            form.find('input[type="submit"]').attr('disabled', 'disabled'); // например, отключим кнопку, чтобы не жали по 100 раз
		          },
		       success: function(data){ // событие после удачного обращения к серверу и получения ответа
		       		if (data['error']) { // если обработчик вернул ошибку
		       			alert(data['error']); // покажем её текст
		       		} else { // если все прошло ок
		       			alert('Письмо отвравлено! Чекайте почту! =)'); // пишем что все ок
		       		}
		         },
		       error: function (xhr, ajaxOptions, thrownError) { // в случае неудачного завершения запроса к серверу
		            alert(xhr.status); // покажем ответ сервера
		            alert(thrownError); // и текст ошибки
		         },
		       complete: function(data) { // событие после любого исхода
		            form.find('input[type="submit"]').prop('disabled', false); // в любом случае включим кнопку обратно
		         }
		                  
			     });
		}
		return false; // вырубаем стандартную отправку формы
	});
});


блок с формами
Код:
<div id="fields"> 
                                <form method="post" action="" id="ajaxform"> <br />
<input type="text" size="32" maxlength="36" name="name" placeholder="Ваше имя" val=""> <br />
<input type="text" size="32" maxlength="36" name="email" placeholder="Ваш email" val=""> <br />
<input type="text" size="32" maxlength="36" name="subject" placeholder="Тема" val=""> <br />
<textarea cols="25" rows="10" name="message" placeholder="Сообщение.." val=""></textarea> <br />
<input type="submit" value="GO GO GO"/>
</form>
                            </div>
Ответить с цитированием
  #2 (permalink)  
Старый 30.07.2014, 09:03
Аспирант
Отправить личное сообщение для cyber_bober Посмотреть профиль Найти все сообщения от cyber_bober
 
Регистрация: 12.12.2012
Сообщений: 80

Тебе код написать или подсказать как сделать? Предположим что подсказать, повешай на success событие, котороое будет скрывать форму (#ajaxform).hide(), и добавь блок с сообщением <div id="success" style="display:none;"> Спасибо, ваще сообщение отправлено</div>, на него вешай событие (#success).show();
Ответить с цитированием
  #3 (permalink)  
Старый 30.07.2014, 09:06
Аспирант
Отправить личное сообщение для cyber_bober Посмотреть профиль Найти все сообщения от cyber_bober
 
Регистрация: 12.12.2012
Сообщений: 80

success: function(data){ 
                    if (data['error']) { // если обработчик вернул ошибку

                        alert(data['error']); // покажем её текст

                    } else { // если все прошло ок

                       $('#ajaxform').hide(); // скрываем форму
                       $('#success').show(); //показываем сообщение об успешной      отправке

                    }
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
textarea и alert DmitriSpartak Элементы интерфейса 9 15.09.2013 15:55
Безопасность клиентского кода. BallsShaped Общие вопросы Javascript 35 29.10.2012 17:20
Таймер обратного отсчета на Alert moorzilla Общие вопросы Javascript 2 27.05.2012 22:14
alert!!! как быть с alert???? gooody jQuery 2 19.02.2010 21:44
alert () вместо sleep () artemiusgreat Общие вопросы Javascript 1 14.11.2008 14:06