Как отправить одну форму с помощью 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 ();

Другие вопросы по тегам