2009-03-24 94 views
6

tôi phải lĩnh vực đầu vào ẩn như:Cách lấy giá trị từ <input> bằng jQuery?

<input name="foo" value="bar"> 
<input name="foo1" value="bar1"> 

Tôi muốn lấy cả hai những giá trị đó và gửi cho họ đến máy chủ sử dụng jQuery. Làm thế nào người ta sử dụng công cụ chọn jQuery để lấy các giá trị đó?

Trả lời

24

Như "foo" và " foo1 "là tên của các trường nhập của bạn, bạn sẽ không thể sử dụng bộ chọn id của jQuery (#), nhưng bạn sẽ phải sử dụng thay vào đó bộ chọn thuộc tính:

var foo = $("[name='foo']").val(); 
var foo1 = $("[name='foo1']").val(); 

Đó không phải là lựa chọn tốt nhất, hiệu quả. Bạn nên đặt id cho trường nhập của mình và sử dụng công cụ chọn id (ví dụ: $ ("# foo")) hoặc ít nhất cung cấp ngữ cảnh cho công cụ chọn thuộc tính:

var form = $("#myForm"); // or $("form"), or any selector matching an element containing your input fields 
var foo = $("[name='foo']", form).val(); 
var foo1 = $("[name='foo1']", form).val(); 
+0

Rất tiếc ... đúng vậy. Tôi nên xóa câu trả lời của mình, .. – Clyde

+0

Chúng có thể không hoạt động tốt như $ ('# foo'), nhưng trừ khi đó là vấn đề, đừng lo lắng về nó. Tối ưu hóa sớm và tất cả điều đó. –

+0

@Andrew, bạn hoàn toàn đúng, người dùng sẽ không thấy sự khác biệt trong hầu hết các trường hợp. Đó là một thực hành tốt nhất, đặc biệt là xem xét rằng tên có thể không phải là duy nhất. – ybo

5

Bạn nên sử dụng id hoặc các lớp để tăng tốc độ nhận quy trình giá trị.

phiên bản ID (giả sử đầu vào có id = 'foo')

var value1 = $('#foo').val(); 

Lớp phiên bản (giả sử đầu vào có class = 'foo')

var value1 = $('.foo').val(); 
Các vấn đề liên quan