Выбор элементов jquery из различных форм в списках нажатий кнопок - PullRequest
0 голосов
/ 23 декабря 2011

хорошо, поэтому у меня есть три формы на первой странице моего сайта, и я не самый лучший с селекторами jquery или функциями .each .... поэтому у меня есть кнопки пользовательского интерфейса j query, связанные с прослушивателем событий, который отправляет ajax сообщение, но проблема в том, что я не могу просто указать форму, которую я хочу! вот мой код

<form>
fields......
fields......
fields......
fields......
<button>register</button>
</form>
<form>
fields......
fields......
fields......
fields......
fields......
<button>login</button>
</form>
<form>
fields......
fields......
fields......
fields......
fields......
<button>book</button>
</form>
$(function(){
    $('button').click(function(event) {
        $('form .... i wanna hide all forms once clicked .. working!!!').hide();
        event.preventDefault();
        $('pload').html('<img src="source/image/lbl.gif">');
             // heres where i get the data from all forms i just want one....
        var page = 'form.'+$('form').serialize();
        var huh = $('input:hidden').val();
        var data = 'pop='+huh+'&page='+page;
        $.post('source/php/bots/authorize.php',data,function(data){
                $('#pager_master_div').html(data);
                $('pload').html('');
            });
    });
});

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

Чтобы выбрать форму, в которой живет нажатая кнопка:

$('button').on('click', function (event) {

    //stop the form from submitting normally since you are handling the submission with AJAX
    event.preventDefault();

    var $parentForm = $(this).parents('form'),//get this button's form
        page        = 'form.' + $parentForm.serialize(),//serialize the selected form
        huh         = $parentForm.find('input:hidden').val();//get the value of the hidden input in the selected form
});

Вот демоверсия: http://jsfiddle.net/vrjxr/

0 голосов
/ 23 декабря 2011

Итак, замените:

var page = 'form.'+$('form').serialize();

для:

var page = "form."+$(this).closest('form').serialize();

Таким образом, вы получите ближайший родительский элемент нажатой кнопки (это).

Есть ли проблема с этим $('input:hidden') селектором? Я не был уверен в этом вопросе, но если это так, вы можете поместить $(this).closest('form') в переменную и затем использовать variable.find('input:hidden').

...