Как отправить одну форму с помощью jQuery bind-submit, если у меня есть несколько форм на странице?
Я связываю функцию отправки jQuery с тегом формы. Это прекрасно работает с одной формой, но если у меня несколько форм, она отправляет данные из всех форм в переменную Post.
Как я могу отправить только одну форму?
$('form').bind('submit',function() {
var data = $('form').serializeAnything();
$.post('forms/form.ajax.submit.php',data,function(response) {
...
});
4 ответа
Используйте идентификаторы для ваших форм и используйте их для переменных данных.
var data = $('#this_form').serializeAnything();
или пройти через поиск родительской формы, как $(this).closest('form').serializeAnything();
Вместо $('form').serializeAnything();
ты хочешь $(this).serializeAnything();
(или, возможно, $(this).serialize();
если стандартная функция сериализации JQuery будет делать).
/* attach a submit handler to each form */
$('form').submit(function (event) {
/* stop form from submitting normally */
event.preventDefault();
/* get some values from elements on the page: */
var $form = $(this),
form_data = $form.serialize(),
url = $form.attr('action');
/* Send the data using post */
var posting = $.post(url, form_data);
console.log('finished ajax post');
/* Put the results in a div */
posting.done(function (data) {
console.log('now load response');
$('#result').empty().append( $(data) );
});
});
Смотрите http://jsfiddle.net/jhfrench/QjaTq/29/.
var data;
data=$('form1').serializeAnything();
data+=$('form2').serializeAnything();
data+=$('form3').serializeAnything();
Вы можете сделать это, используя идентификатор селектора или класс.
например
var data = $ ('#formID').serializeAnything ();
var data = $ ('.formCLASS').serializeAnything ();