Javascript.RU

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

Несколько контактных форм [ajax]
на странице есть 2 контактные формы. они имеют раздые id и разные js обработчики. то есть обработчики одинаковые только Id в них прописан разный.
пример
$(document).ready(function() {
$("#ajax-contact-form").submit(function() {
var str = $(this).serialize();

$.ajax({
type: "POST",
url: "contact.php",
data: str,
success: function(msg) {

if(msg == 'OK') {
result = '<div class="notification_ok">Спасибо!<br />Наш менеджер свяжется<br />с вами в ближайшее время</div>';
$('#ajax-contact-form').fadeOut(10);
} else {
$('#ajax-contact-form input[type=text]').addClass('error');
}
 
}
$('#note').html(result).fadeIn().delay(33999999).fadeOut("slow");


}
});
return false;
});
});

и
$(document).ready(function() {
$("#ajax-contact-form2").submit(function() {
var str = $(this).serialize();

$.ajax({
type: "POST",
url: "contact.php",
data: str,
success: function(msg) {

if(msg == 'OK') {
result = '<div class="notification_ok">Спасибо!<br />Наш менеджер свяжется<br />с вами в ближайшее время</div>';
$('#ajax-contact-form2').fadeOut(10);
} else {
$('#ajax-contact-form2 input[type=text]').addClass('error');
}
 
}
$('#note2').html(result).fadeIn().delay(33999999).fadeOut("slow");


}
});
return false;
});
});


скрипт проверяет отправку сообщения, если все ок то он прячет форму и выводит тест благодарности, если что то не заполнено то добавляет класса к инпутам.
проблема в том что после успешной отправки с одной формы то при попытке отправить с другой в любом случае выводится сообшение с благодарностью( получается и текст благодарности и форма с добавленным классом "error" )
как вот исправить это.
надеюсь что более-менее понятно объяснил

Последний раз редактировалось RapCore, 08.03.2014 в 17:10.
Ответить с цитированием
  #2 (permalink)  
Старый 08.03.2014, 16:27
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Пожинай плоды своей лени. Поленился изначально сделать нормально - теперь разгребай. У тя два куска кода на 99% одинаковы, неужели ты это не замечаешь?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 08.03.2014, 17:09
Интересующийся
Отправить личное сообщение для RapCore Посмотреть профиль Найти все сообщения от RapCore
 
Регистрация: 03.07.2013
Сообщений: 28

да замечаю, я просто в js - 0 и не знал как сделать обработку двух форм в одном коде вот и сделал два под разные id
Ответить с цитированием
  #4 (permalink)  
Старый 08.03.2014, 17:42
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Навешивай общий обработчик submit на обе формы. Для этого в селекторе укажи айдишники через запятую: $('#id1, #id2').submit(...)
Далее в обработчике, this будет указывать на отправляемую форму. Сохрани ее в переменную form. Далее вместо
$('#ajax-contact-form2 input[type=text]')

Пиши: $('input[type="text"]', form) или $(form).find('input[type="text"]')

С #note поступи также.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 08.03.2014, 19:22
Интересующийся
Отправить личное сообщение для RapCore Посмотреть профиль Найти все сообщения от RapCore
 
Регистрация: 03.07.2013
Сообщений: 28

danik.js,
спасибо большое, код получился более человечным, но все же проблема не решилась.
при повторной отправке данных с другой формы при клике на submit выводится сообщение об отправке.
я никак не могу понять почему оно появляется. ведь алгоритм следующий:
- отправка данных методом Post ;
- проверка наличия всех данных;
- если все данные есть -> отправляем сообщение и получаем "Ok";
- js проверят работы php скрипта, если результат == Ok то выводим сообщение и скрываем форму.

вроде все логично , но никак не пойму откуда появляется "сообщение об отправке" если обработчик не получает "ok"
вот живой пример http://wp-man.ru/video/ (там сейчас есть проверка всех полей на заполнение так что все заполните)
попробуйте отправить данные с первой формы, а потом сразу со второй
Ответить с цитированием
  #6 (permalink)  
Старый 08.03.2014, 20:07
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Дык у тебя в независимости от msg всегда выполняется такой код:
Сообщение от RapCore
$('#note').html(result)
При первой отправке ты создаешь глобальную переменную result (причем нерекомендуемым образом) со словами благодарности. Причем если msg не равно ОК, то переменная не будет создана и эта строка просто будет бросать исключение всякий раз при отправке до того как ты создашь result.
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько одинаковых форм обратной связи на одной странице stalex jQuery 14 24.04.2018 17:25
Поместить значения в несколько форм $wAiN_n Общие вопросы Javascript 2 26.10.2012 19:48
передача данных из форм своего сайта в формы стороннего сайта najrobi Общие вопросы Javascript 19 15.07.2012 22:18
Несколько форм с одним классом + submit klev2004 Общие вопросы Javascript 8 09.07.2012 15:41
Несколько простых скриптов JS koshsh Работа 1 08.05.2012 20:58