2012-03-06 11 views
8

Tengo varias casillas de verificación con una matriz de nombres y quiero que la salida de las casillas marcadas sea una variable con una lista separada por comas.jQuery checkbox values ​​to comma separated list

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

Por ejemplo, si el primer y el último cuadro se seleccionan la salida será:

var output = "288,290"; 

¿Cómo se puede hacer esto con jQuery?

+0

posible duplicado de [jQuery matriz de todas las casillas de verificación seleccionadas (por clase)] (http://stackoverflow.com/ questions/2099164/jquery-array-of-all-selected-checkboxes-by-class) –

Respuesta

5

Actualmente probado por la ONU, pero creo que el siguiente debería funcionar:

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

Editado, después de un pequeño descanso, para usar DOM nativo, en lugar de $(this).val() (que es innecesariamente caro, en contexto):

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

puede utilizar :checkbox y selector de nombre de atributo (:checkbox[name=example\\[\\]]) para obtener la lista de casilla con name="example[]" y luego se puede utilizar :checked filtro para obtener sólo la selec casilla de verificación ted

Luego puede usar la función .map para crear una matriz fuera de la casilla de verificación seleccionada.

DEMO

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

Hmmm, esto parece devolver una lista de todas las casillas (marcadas) incluso con aquellas sin el nombre del ejemplo []. p.ej. http://jsfiddle.net/6LCvN/. ¿Alguna idea de por qué? – Hugh

+0

@Hugh Se le escapó de alguna manera, pero necesita barras dobles para escapar de '[' y ']' http://jsfiddle.net/6LCvN/22/ o incluir comillas http://jsfiddle.net/hmtdtwbr/ –

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

obras para mí siempre