2010-05-24 2 views
10

Cách dễ nhất để lấy tất cả các phần tử biểu mẫu được chứa bởi phần tử trình bao bọc là gì.jQuery - lấy các phần tử biểu mẫu theo id vùng chứa

<form name="myForm"> 
    <input name="elementA" /> 
    <div id="wrapper"> 
    <input name="elementB" /> 
    <textarea name="elementC" /> 
    </div> 
</form> 

Trong HTML ở trên, tôi sẽ elementB và elementC nhưng không phải elementA. Tôi không muốn liệt kê tất cả các loại phần tử biểu mẫu (chọn, văn bản, đầu vào, tùy chọn ...). Tôi muốn sử dụng myForm.elements.

Bất kỳ ý tưởng nào?

Trả lời

15

Sử dụng :input pseudo selector nếu bạn không muốn để xác định tất cả:

$('#wrapper :input'); 

:input chọn tất cả các yếu tố đầu vào, textarea, chọn và nút. Và không cần sử dụng .children() tại đây.

+0

Tôi thực sự cần phải nhìn vào nhiều bộ chọn giả. Đó là hai lần một người nào đó đã đưa ra một giải pháp tốt hơn bởi vì tôi không biết tất cả :) –

+0

Có nó là :), tôi không biết tại sao tôi tin rằng nó chỉ dành cho các yếu tố đầu vào ... như: reset: radio .. –

+0

@ungarida: Vì 'đầu vào' và': đầu vào' chỉ là một ký tự khác nhau, nhưng sau này bao gồm tất cả các loại điều khiển biểu mẫu. – Powerlord

1

Nếu có là gì, nhưng các yếu tố hình thức trong đó

$('#wrapper').children(); 

Nếu có sẽ được những thứ khác cũng

$('#wrapper').children('input, select, textarea'); 
+0

điều gì về '' sẽ không được tìm thấy – jigfox

+0

@Jens, đó là điểm chính xác. –

+0

Ông nói "Tôi sẽ elementB và elementc nhưng không elementA". Ban đầu, anh ta yêu cầu các phần tử biểu mẫu trong vùng chứa. –

0

jQuery ('hình thức [name = MyForm] div # wrapper').bọn trẻ();

+0

bạn có muốn tìm elementA không. Hãy thử mã ở đây nó không nên là –

0

gì về

$(form)[0].elements 

I Know trên mã số hoạt động trong Chrome. Không kiểm tra các trình duyệt khác.