Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.11.2014, 08:45
Аспирант
Отправить личное сообщение для cyber_bober Посмотреть профиль Найти все сообщения от cyber_bober
 
Регистрация: 12.12.2012
Сообщений: 80

Обработка нескольких форм на странице
Привет, есть к примеру три формы на одной странице (форма записи на курс), форм может быть от 1 до 10, каждую форму нужно обработать и отправить в базу. Форма обрабатывается javascript и отправляет данные посредством ajax. Чтобы привязаться к форме, я использую ее id.

Но возникает такой момент, что для каждой формы мне нужен свой обработчик, тоесть я привязываюсь к ней по id, чтобы сообщить обработчику откуда собирать данные. ID генерируется посредством выборки из базы, типа #form%id% где %id% то что выдаст шаблонизатор.

По итогу нужно назначать обработчик для каждой формы, который будет отличаться только id формы, которую он обрабатывает.
Как можно изящней это решить?
Ответить с цитированием
  #2 (permalink)  
Старый 14.11.2014, 10:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от cyber_bober
для каждой формы мне нужен свой обработчик
А что уникального в этих формах, кроме id?
И что уникального в их обработчиках?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 14.11.2014, 11:05
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Если формы одинаковые\однотипные то добавь к каждой такой форме класс и привязывайся к нему, а не к id.
Ответить с цитированием
  #4 (permalink)  
Старый 14.11.2014, 14:43
Аспирант
Отправить личное сообщение для cyber_bober Посмотреть профиль Найти все сообщения от cyber_bober
 
Регистрация: 12.12.2012
Сообщений: 80

danik.js,
форма отличается только одним полем, эта форма курса, в каждую из них передается его название шаблонизатором и все, в остальном форма идентичная. Обработчик вообще одинаковый, просто как связать обработчик с формой иначе, если не через айди? Повешать вызов функции на action формы и обрабатывать ее через this?
Просто если делать через class, как предлагает krasovsky, то обработчик пройдется через все формы, а в них могут по ошибке занести данные и одно поле в каждой по умолчанию заполнено разным значением.
Ответить с цитированием
  #5 (permalink)  
Старый 14.11.2014, 15:40
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Стандартный обработчик:

$('form').submit(e) {
    e.preventDefault();
    $.ajax({
        type: this.method,
        url: this.action,
        data: $(this).serialize(),
        success: function() { /*успех*/ },
        error: function() { /*ошибка отправки*/ },
    });
});


И пофиг че там у тебя в форме. Только учти, селектор "form" захватит все формы, возможно тебе не все нужны (например форма поиска). Поэтому назначь класс нужным.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 14.11.2014, 15:42
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ах да, на сервере аяксовый запрос отличаешь от обычного по заголовку X-Requested-With
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 14.11.2014, 17:18
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от cyber_bober
чтобы сообщить обработчику откуда собирать данные.
"Обработчик" не собирает данные, он получает данные. Собирает как вы сами написали - ява-скрипт. Никто не знает кроме Ванги как вы их собираете. Если в json - там будет id формы, тот самый, и значит процессинг узнает что к чему. Если грузится как есть, как форма, то поля должны называться как форма, ну типа form1[1] или form1[somename] - что даст когерентный массив в $_POST['form1']['somename'] и isset($_POST['form1'] соответственно все данные именно form1. И последнее, самый баян - в action формы пишут ее признак и через $_GET получают и используют.
Ответить с цитированием
  #8 (permalink)  
Старый 14.11.2014, 17:19
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

action="some.php?form_id=1"

if(isset($_GET['form_id']))
  $form_id = $_GET['form_id'];


Нет, самый баян это дать name кнопке submit, чтобы оно в запросе оказалось.

И еще, попробуйте уже атрибут form. Или будете ждать когда сгниет html5?

Последний раз редактировалось kostyanet, 14.11.2014 в 17:23.
Ответить с цитированием
  #9 (permalink)  
Старый 17.11.2014, 05:36
Аспирант
Отправить личное сообщение для cyber_bober Посмотреть профиль Найти все сообщения от cyber_bober
 
Регистрация: 12.12.2012
Сообщений: 80

danik.js,
спасибо, я правда без jquery, но суть понятна
Ответить с цитированием
  #10 (permalink)  
Старый 17.11.2014, 05:40
Аспирант
Отправить личное сообщение для cyber_bober Посмотреть профиль Найти все сообщения от cyber_bober
 
Регистрация: 12.12.2012
Сообщений: 80

kostyanet,
спасибо, про массив тоже понятно, но вот как form поможет в данном случае? у меня форма пользователем не создается и не изменяется количество полей)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько одинаковых форм обратной связи на одной странице stalex jQuery 14 24.04.2018 17:25
Автоматический Submit нескольких форм Soeth Общие вопросы Javascript 10 17.03.2015 02:04
Ajax+js+5 форм обратной связи на одной странице aleksandr8i AJAX и COMET 0 01.04.2014 10:04
Некорректная обработка двух форм на странице bnr17 Events/DOM/Window 6 11.02.2013 03:50
Опрос форм на странице pylyp Элементы интерфейса 2 17.07.2012 21:13