2010-08-12 18 views
6

Tôi đang cố gắng lấy các giá trị của nhiều đầu vào biểu mẫu, nhưng vấn đề là tôi có một số biểu mẫu giống hệt nhau trên cùng một trang và chỉ muốn lấy các yếu tố đầu vào từ biểu mẫu đã được gửi, vì vậy tôi sử dụng từ khóa 'này'. Đây là mã của tôi:jQuery có được hình thức đầu vào này

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

Tuy nhiên, khi tôi cố gắng đăng nhập các biến để kiểm tra các giá trị sai, tất cả đều không được xác định. Điều gì sẽ là đúng cách để làm điều này?

Cảm ơn bạn đã trợ giúp: D

+0

và thay vì sử dụng 'this', bạn có thể muốn xem xét sử dụng 'var $ target = $ (e.target)' để lấy phần tử nguồn của sự kiện ... chỉ mang tính mô tả hơn. – CaffGeek

Trả lời

7

Cần xem HTML.

Nhưng, chúng có hướng trực tiếp đến trẻ em của biểu mẫu không?
Hoặc bạn có đang sử dụng .find, thay vì .children vì chúng được lồng dưới không?

+0

Yesss, cảm ơn rất nhiều lol, sai lầm ngu ngốc, cũng không quen thuộc với mã ... sử dụng smarty và form ở trong một file template khác nên tôi thậm chí còn không nghĩ đến việc đó! Đối với một số lý do hình thức là trong một bảng ... do đó, các yếu tố đầu vào khá sâu lồng nhau ..:/Tôi sẽ chấp nhận câu trả lời của bạn trong một vài phút! Tôi sẽ không để tôi. – Becky

3

bạn thậm chí có thể sử dụng bối cảnh 'này'

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

Sử dụng .find() như Chad gợi ý.

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

đây là cú pháp rõ ràng nhất, không có ý định chơi chữ. – g33kz0r

Các vấn đề liên quan