ответ isNaN1247 правильно разрешает часть, касающуюся переопределения отправки, но на самом деле вам не нужно перемещать элементы в форму.
jQuery может напрямую сериализовать эти входы внутри div . Вам просто нужно предоставить селектор для получения каждого из этих входов (как описано в этот ответ ). А jQuery позволяет обрабатывать как входы формы, так и другие входы одновременно:
$('#some-form').submit(function(e) {
e.preventDefault();
var requestData = $('#some-form, #more-inputs :input').serialize();
$.get('http://yoururl.com', requestData, function (data) {
alert('handle your data here: ' + data);
});
});
Примечание: этот ответ также требует наличия некоторых атрибутов имени на ваших входах (как в «больше входов», так и внутри формы).
Возможно, вы захотите проверить, что serialize
возвращает, с помощью следующего фрагмента кода:
$('#some-form').submit(function(e) {
e.preventDefault();
var requestData = $('#some-form, #more-inputs :input').serialize();
console.log(requestData);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="some-form">
<input type='text' name="a" value="aaa">
<input type='text' name="b" value="bbb">
<button type="submit">submit</button>
</form>
. . . later in the page . . .
<div id="more-inputs">
<input type="checkbox" name="checked" checked>
<input type="text" name="d" value="ddd">
</div>