2012-03-06 37 views
8

Tôi có một số hộp kiểm với một mảng tên và tôi muốn đầu ra của các hộp được chọn là một biến có danh sách được phân tách bằng dấu phẩy.Giá trị hộp kiểm jQuery cho danh sách được phân cách bằng dấu phẩy

<input type="checkbox" name="example[]" value="288" /> 
<input type="checkbox" name="example[]" value="289" /> 
<input type="checkbox" name="example[]" value="290" /> 

Ví dụ nếu hộp đầu tiên và cuối cùng được lựa chọn đầu ra sẽ là:

var output = "288,290"; 

Làm thế nào tôi có thể làm điều này với jQuery?

+0

thể trùng lặp của [jQuery mảng của tất cả các hộp kiểm chọn (bằng lớp)] (http://stackoverflow.com/ câu hỏi/2099164/jquery-array-of-tất cả-lựa chọn-hộp kiểm-by-class) –

Trả lời

5

Hiện nay chưa được thử nghiệm, nhưng tôi tin rằng những điều sau đây nên làm việc:

var valuesArray = $('input:checkbox:checked').map(function() { 
    return $(this).val(); 
}).get().join(); 

Edited, sau khi chia tay nhỏ, sử dụng DOM bản xứ, chứ không phải là $(this).val() (đó là không cần thiết đắt tiền, trong bối cảnh):

var valuesArray = $('input:checkbox:checked').map(function() { 
    return this.value; 
}).get().join(","); 
19

bạn có thể sử dụng :checkbox và chọn tên thuộc tính (:checkbox[name=example\\[\\]]) để có được danh sách các hộp kiểm với name="example[]" và sau đó bạn có thể sử dụng :checked lọc để có được chỉ SELEC ted hộp kiểm.

Sau đó, bạn có thể sử dụng chức năng .map để tạo một mảng trong hộp kiểm đã chọn.

DEMO

var output = $.map($(':checkbox[name=example\\[\\]]:checked'), function(n, i){ 
     return n.value; 
}).join(','); 
+0

Hmmm, điều này dường như trả về một danh sách tất cả (đã đánh dấu) hộp kiểm ngay cả với những người không có tên ví dụ []. ví dụ. http://jsfiddle.net/6LCvN/. Bất kỳ ý tưởng tại sao? – Hugh

+0

@Hugh Bỏ lỡ nó bằng cách nào đó, nhưng bạn cần hai dấu gạch chéo để thoát khỏi '[' và ']' http://jsfiddle.net/6LCvN/22/ hoặc bọc trong dấu ngoặc kép http://jsfiddle.net/hmtdtwbr/ –

3
var valuesArray = $('input[name="valuehere"]:checked').map(function() { 
     return this.value; 
     }).get().join(","); 

công trình đối với tôi luôn

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