Обработка нескольких форм на странице
Привет, есть к примеру три формы на одной странице (форма записи на курс), форм может быть от 1 до 10, каждую форму нужно обработать и отправить в базу. Форма обрабатывается javascript и отправляет данные посредством ajax. Чтобы привязаться к форме, я использую ее id.
Но возникает такой момент, что для каждой формы мне нужен свой обработчик, тоесть я привязываюсь к ней по id, чтобы сообщить обработчику откуда собирать данные. ID генерируется посредством выборки из базы, типа #form%id% где %id% то что выдаст шаблонизатор. По итогу нужно назначать обработчик для каждой формы, который будет отличаться только id формы, которую он обрабатывает. Как можно изящней это решить? |
Цитата:
И что уникального в их обработчиках? |
Если формы одинаковые\однотипные то добавь к каждой такой форме класс и привязывайся к нему, а не к id.
|
danik.js,
форма отличается только одним полем, эта форма курса, в каждую из них передается его название шаблонизатором и все, в остальном форма идентичная. Обработчик вообще одинаковый, просто как связать обработчик с формой иначе, если не через айди? Повешать вызов функции на action формы и обрабатывать ее через this? Просто если делать через class, как предлагает krasovsky, то обработчик пройдется через все формы, а в них могут по ошибке занести данные и одно поле в каждой по умолчанию заполнено разным значением. |
Стандартный обработчик:
$('form').submit(e) { e.preventDefault(); $.ajax({ type: this.method, url: this.action, data: $(this).serialize(), success: function() { /*успех*/ }, error: function() { /*ошибка отправки*/ }, }); }); И пофиг че там у тебя в форме. Только учти, селектор "form" захватит все формы, возможно тебе не все нужны (например форма поиска). Поэтому назначь класс нужным. |
Ах да, на сервере аяксовый запрос отличаешь от обычного по заголовку X-Requested-With
|
Цитата:
|
action="some.php?form_id=1"
if(isset($_GET['form_id'])) $form_id = $_GET['form_id']; Нет, самый баян это дать name кнопке submit, чтобы оно в запросе оказалось. И еще, попробуйте уже атрибут form. Или будете ждать когда сгниет html5? |
danik.js,
спасибо, я правда без jquery, но суть понятна |
kostyanet,
спасибо, про массив тоже понятно, но вот как form поможет в данном случае? у меня форма пользователем не создается и не изменяется количество полей) |
Часовой пояс GMT +3, время: 23:04. |