Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Клик по кнопке срабатывает со второго раза, на почту приходит два одинаковых письма (https://javascript.ru/forum/misc/65326-klik-po-knopke-srabatyvaet-so-vtorogo-raza-na-pochtu-prikhodit-dva-odinakovykh-pisma.html)

yatsyk 12.10.2016 17:24

Клик по кнопке срабатывает со второго раза, на почту приходит два одинаковых письма
 
Доброго времени суток! Хочу прикрутить на сайт форму обратной связи. Проблема в том, что при клике на кнопку скрипт отправки сообщения срабатывает со второго раза, после чего два раза всплывает оповещение об успешной отправке и на почту приходит два одинаковых письма. Если убрать валидацию формы то все отрабатывает нормально. Объясните пожалуйста в чем проблема и как ее можно решить?

Вот сам js-код:
// Валидация формы заявки (только там где jquery)
function validateShortForm(formid) {
	var forma = $('#'+formid),
			nameField	= $("input[name=name]", forma).val(),
			phoneField	= $("input[name=phone]", forma).val();

	if ($.trim(nameField).length == 0 || $.trim(nameField)=='Ваше имя') {
		alert("Представьтесь, пожалуйста.");
	} else if (($.trim(phoneField).length == 0) || ($.trim(phoneField)=='Телефон')) {
		alert("Пожалуйста, оставьте свой контактный телефон");
	}else{
			$(document).ready(function() {
		
			//E-mail Ajax Send
			$("form").submit(function() { //Change
				var th = $(this);
				$.ajax({
					type: "POST",
					url: "mail.php", //Change
					data: th.serialize()
				}).done(function() {
					alert("Спасибо за обращение, Ваша заявка принята. В ближайшее время мы с Вами свяжемся!");
					setTimeout(function() {
						// Done Functions
						th.trigger("reset");
					}, 1000);
				});
				return false;
			});
		
		});
	}
	return false;
}

Coriolan161 12.10.2016 17:32

yatsyk,
зачем ты туда document.ready запихал?

yatsyk 12.10.2016 21:46

Цитата:

Сообщение от Coriolan161 (Сообщение 431463)
yatsyk,
зачем ты туда document.ready запихал?

Я новичок в теме, только начинаю изучать js. Признаюсь честно: взял два куска кода (валидации и отправки) и склеил их вместе. Просто очень срочно нужна рабочая форма поэтому и пришел к такому варианту, т.к. язык изучить не успею за это время. Можешь подсказать что именно нужно исправить в данном коде?

Bond 13.10.2016 02:08

yatsyk,
Цитата:

Сообщение от yatsyk
что именно нужно исправить в данном коде

Удалить 12, 15, 16, 29, 31 строчки.
И в 20 и 25 строчке th. заменить на forma.
то есть так должно быть
data: forma.serialize() //20 строка

forma.trigger("reset"); //25 строка

yatsyk 13.10.2016 13:28

Bond, Спасибо вам большое, теперь все работает)


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