2010-08-12 9 views
6

Я пытаюсь получить значения нескольких входных форм, но проблема в том, что у меня есть несколько одинаковых форм на одной странице и только хочу получить входные данные из формы, которая была отправлена, поэтому я используя ключевое слово «this». Это мой код:jQuery получить ЭТУ форму ввода

$('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(); 

Однако, когда я пытаюсь войти переменные, чтобы проверить, что они возвращаются неправильные значения, это говорит, что они все не определено. Каким будет правильный способ сделать это?

Спасибо за любую помощь: D

+0

и вместо того, чтобы использовать 'this', вы можете рассмотреть возможность использования' вар $ TARGET = $ (e.target) ', чтобы получить исходный элемент события ... это просто более описательный характер. – CaffGeek

ответ

7

Нужно увидеть HTML.

Но являются ли они прямыми детьми в форме?
Или вы должны использовать .find, а не .children, потому что они вложены ниже?

+0

Yesss, спасибо много lol, глупая ошибка, также не знакомая с кодом ... используя smarty, и форма находится в другом файле шаблона, поэтому я даже не подумал там смотреть! По какой-то причине форма находится в таблице ... так что входы были довольно глубоко вложенными:/Я приму ваш ответ за несколько минут! Не позволяю мне атаковать. – Becky

3

вы даже можете использовать 'это' Context

var fname = $('input.fname', this).val(); 
2

Использование .find(), как предложил Чад.

$('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(); 

}); 
+0

это самый чистый синтаксис, а не каламбур. – g33kz0r

Смежные вопросы