views:

41

answers:

3

I am trying to get the values of multiple form inputs, but the problem is I have several identical forms on the same page and only want to get the inputs from the form that was submitted, so I am using the 'this' keyword. This is my code:

$('form.contact_form').submit(function(e) {
    var fname = $(this).children('input.fname').val();
    var email = $(this).children('input.email').val();
    var comment = $(this).children('input.comment').val();

However, when I try to log the variables to test they're returning the wrong values, it says they are all undefined. What would be the right way to do this?

Thanks for any help :D

+4  A: 

Need to see the HTML.

But, are they direct children of the form?
Or should you be using .find, instead of .children because they are nested lower?

Chad
Yesss, thanks a lot lol, stupid mistake, also not familiar with the code...using smarty and the form is in another template file so I didn't even think to look there! For some reason the form is in a table...so the inputs were quite deeply nested.. :/ I'll accept your answer in a few mins! Won't let me atm.
Becky
+1  A: 

you can even use 'this' context

var fname = $('input.fname', this).val();
Tarentrulle
+1  A: 

Use .find() as Chad suggested.

$('form.contact_form').submit(function(e) {
    var $this = $(this);
    var fname = $this.find('input.fname').val();
    var email = $this.find('input.email').val();
    var comment = $this.find('input.comment').val();

});
Dale