2012-03-06 12 views
8

Ho diverse caselle di controllo con un array di nomi e voglio che l'output delle caselle spuntate sia una variabile con un elenco separato da virgole.jQuery valori di casella di controllo in elenco separato da virgola

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

Per esempio se la prima e ultima casella è selezionata l'uscita sarà:

var output = "288,290"; 

Come posso fare questo con jQuery?

+0

possibile duplicato del [jQuery Array di tutte le caselle selezionate (per classe)] (http://stackoverflow.com/ domande/2099164/jquery-array-of-all-selected-checkboxes-by-class) –

risposta

5

Attualmente non-testati, ma credo che il seguente dovrebbe funzionare:

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

cura, dopo una piccola pausa, per usare DOM nativo, piuttosto che $(this).val() (che è inutilmente costoso, nel contesto):

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

È possibile utilizzare :checkbox e selettore di attributo name (:checkbox[name=example\\[\\]]) per ottenere l'elenco della casella con name="example[]" e quindi è possibile utilizzare :checked filtro per ottenere solo il Selec casella di controllo

Quindi è possibile utilizzare la funzione .map per creare una matrice dalla casella di controllo selezionata.

DEMO

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

Hmmm, questo sembra restituire un elenco di tutte le checkbox (spuntate) anche con quelle senza il nome dell'esempio []. per esempio. http://jsfiddle.net/6LCvN/. Qualche idea del perché? – Hugh

+0

@Hugh Perso in qualche modo, ma hai bisogno di due barre per sfuggire a '[' e ']' http://jsfiddle.net/6LCvN/22/ o racchiudere tra virgolette http://jsfiddle.net/hmtdtwbr/ –

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

per me funziona sempre

Problemi correlati