jQuery Несколько форм Отправить

У меня есть 4 формы на странице. Я знаю, что формы не могут быть вложенными.

<form id="form1"></form>

<form id="form2"></form>

<form id="form3"></form>

<form id="form4"></form>

представленный в этом порядке.

Форма 1 и Форма 4 отправляются на одну и ту же страницу php для обработки. Форма 1 имеет 1 поле ввода. Форма 4 имеет несколько полей, флажки и выборки.

Каков наилучший подход как для формы 1, так и для формы 4, отправляющей комбинированные поля обеих форм?

Я пробовал jQuery, отлично работает для ввода текста и флажка, но не могу заставить его работать с Select. Пробовал комбинировать форму 1 и форму 4 и использовать css для изменения формы 1, но не может правильно подобрать макет.

Есть ли что-то более простое в этом?

Это невозможно. Вы можете использовать метод serialize() или serializeArray() для получения данных форм и отправить их на сервер с помощью Ajax:

Кодировать набор элементов формы как строку для представления.

 $('#send').click(function() { var firstFormData = $('form:eq(0)').serializeArray(); var fourthFormData = $('form:eq(3)').serializeArray(); $.ajax({ url : '...', type : 'post', data : firstFormData.concat(fourthFormData) }).done(function() { // ... }); }); 

Хорошо, я не смог получить .serialize () для работы с блоком checkbox из form4, например

 <input type="checkbox" id="model[]"> 

Я попытался захватить проверенные значения, но не смог заставить их сериализоваться вместе с другим вводом:

 var vals = [] $('input:checkbox[name="model[]"]').each(function() { if (this.checked) { vals.push(this.value); } }); 

Поэтому я вернулся и сделал более простую вещь:

Удалите form1, переместите текстовый ввод и кнопку отправки в <div id="searchbox" style="position:abosulte;top:-100px;left:0px;">My original form1</div> внутри form4.

Поместите placeholder <div id="placeholder" style="position:relative;"></div> выше form2 и 3, где раньше была форма 1.

Добавьте javascript выше:

 $(document).ready(function(){ $("#searchbox") .appendTo("#placeholder"); }); 

для перемещения кнопки ввода текста и отправки, чтобы установить их абсолютную и относительную к div-заполнителю.

Таким образом я уменьшил их до 1 формы (что и есть его намерение в любом случае), не полагается на javascript для управления любыми данными и не требует от меня делать тандемную сериализацию в обеих формах.