tags:

views:

51

answers:

2

Hi,

I have multiple forms on the page and i need to get the values of the form that is submitted, but without specifying the form.

$(document).ready( function (){
 $('form').submit( function(){
       return submitForm()
 });

});

and in the .js file submitForm() should identify the id of the form that is submitted. How can be that done?

I get the values of the form[0], not the one that is clicked

+1  A: 

Not sure what submitForm() does, but I assume you're somehow using this in it.

If so, try:

 $('form').submit( function(){
       return submitForm.call( this );
 });

Doing it this way should send the context of the form that was clicked to the submitForm() call.

So in submitForm() you can refer to the correct form using this, or in a jQuery object using $(this).


EDIT:

Here's an example of what I mean: http://jsfiddle.net/pXwTE/

patrick dw
Thanks mate this one worked like a charm
Dr Casper Black
@Dr Casper - You're welcome. :o)
patrick dw
+1  A: 

You can pass the id of each form to your submitForm function like this:

$j(document).ready( function (){
    $j('form').submit( function(){
       return submitForm($j(this).attr('id'));
    });

});

to get all of the values, depending on what you need to do with them, you can use serialize like this:

$j(document).ready( function (){
    $j('form').submit( function(){
       alert($j(this).serialize());
    });
});

or you can loop through all of the form's inputs like this:

$j(document).ready( function (){
    $j('form').submit( function(){
        $j(':input', this).each(function(){
           alert($j(this).val());
       });
    });
});

I created a fiddle for this: http://jsfiddle.net/2HRjF/1/

Matthew J Morrison