Как мне «поймать» несколько форм с разными идентификаторами форм с помощью jQuery?

#jquery #forms #submit

#jquery #формы #Отправить

Вопрос:

Несколько форм размещаются на одной странице и отправляются с помощью jquery. Код, который отправляет форму, прост:

 $("form").submit(function() {
});
  

Проблема, с которой я сталкиваюсь, заключается в том, что выбранная группа форм запускается с этим кодом. Я успешно попробовал следующее:

 $("#form1,#form2,#form3").submit(function() {
});
  

Однако возможно ли выбрать несколько форм с одним идентификатором?

Кроме того, при использовании нескольких идентификаторов для выбора form1, form2 и form3, какие данные отправляются? У меня есть скрытое поле, расположенное в form1, но кажется, что эти данные отправляются при отправке form2. Как я могу это исправить?

Заранее благодарю вас.

Комментарии:

1. Вы как бы неправильно понимаете, как работает идентификатор. Идентификаторы уникальны для всей страницы, у вас не может быть нескольких элементов, не говоря уже о нескольких элементах формы, с одинаковым идентификатором. Что вы пытаетесь сделать?

2. Возможно, Хез имеет в виду, что вы, вероятно, хотите вместо этого (или дополнительно) присвоить класс этим элементам, а затем использовать этот класс.

3. Я понимаю, что идентификаторы уникальны (отсюда и множественные идентификаторы во втором бите кода). Я прошу об обходном пути или других методах достижения этой цели.

4. Можно ли добавить класс в форму, и он будет работать с jQuery? Я пробовал это без успеха.

Ответ №1:

 <form id="form1" class="formClass"></form>
<form id="form2" class="formClass"></form>
<form id="form3" class="formClass"></form>
<form id="form4" class="formClass"></form>


$(".formClass").submit();
  

Комментарии:

1. это должно быть $ («.formClass»).submit()

2. @Ian Jasper Bardoquillo Когда отправлена любая из форм, как я могу собрать данные в javascript из отправленной формы, а не из любых других?

3. @tundoopani: Привет, я опубликовал ответ на твой вопрос. Пожалуйста, проверьте это, я надеюсь, это поможет вам 🙂

Ответ №2:

Этот первый фрагмент кода является событием JavaScript, которое вызывается при отправке. На самом деле это не отправляет форму (однако исключение функции приведет).

Вы можете выбрать несколько форм, используя любой допустимый селектор jQuery. Самым простым методом будет предоставить им класс, на который вы можете легко ссылаться.

Ответ №3:

Я провел быстрый тест в jsFiddle. Сценарий, на который указывают эти формы, является:

 <?php
var_dump($_POST);

error_log(var_export($_POST, true));
  

Вывод журнала ошибок был:

 [error] [client 192.168.9.1] array (n  'field1' => '1',n), referer: http://fiddle.jshell.net/_display/
  

Я понимаю это так, что а) отправлена только одна форма и б) это была первая форма в DOM. Кто-нибудь, поправьте меня, если часть моей методологии неверна.

По сути, это будет означать, что вы захотите прервать любые submit события и объединить все данные формы в один набор параметров перед отправкой.

Ответ №4:

Пожалуйста, проверьте здесь, в jsfiddle. Я надеюсь, что это поможет или, по крайней мере, даст вам представление. 🙂

Комментарии:

1. Я вижу, что делает код, но как я могу отправлять только одну форму одновременно?