2010-01-28 11 views
171

Deseo obtener una lista de nombres de casillas de verificación que están seleccionadas en un div con cierta identificación. ¿Cómo lo haría usando jQuery?Obtener una lista de casillas de verificación marcadas en un div usando jQuery

P. ej., Para este div quiero obtener una matriz ["c_n_0"; "c_n_3"] o una cadena "c_n_0; c_n_3"

<div id="checkboxes"> 
    <input id="chkbx_0" type="checkbox" name="c_n_0" checked="checked" />Option 1 
    <input id="chkbx_1" type="checkbox" name="c_n_1" />Option 2 
    <input id="chkbx_2" type="checkbox" name="c_n_2" />Option 3 
    <input id="chkbx_3" type="checkbox" name="c_n_3" checked="checked" />Option 4 
</div> 

Respuesta

333

Combinación de dos respuestas anteriores:

var selected = []; 
$('#checkboxes input:checked').each(function() { 
    selected.push($(this).attr('name')); 
}); 
+9

y otro combo: var selected = $ ('#checkboxes input: checked'). map (función (i, el) {return el.name;}). get(); // agrega .join (';') para obtener una cadena combinada – roberkules

+6

agregada http://jsfiddle.net/dvCmR/ – roberkules

+1

@Alex LE. ¿Cómo obtengo solo el recuento de las casillas de verificación seleccionadas? Solo necesito verificar si alguna de las casillas dentro del div está marcada o no. – ashishjmeshram

38

¿Esto es así?

var selected = []; 
$('div#checkboxes input[type=checkbox]').each(function() { 
    if ($(this).is(":checked")) { 
     selected.push($(this).attr('name')); 
    } 
}); 
+8

$ (esto) .checked no funciona. Usar if ($ (this) .attr ('checked')) o if ($ (this) .is (': checked')) –

34
$("#checkboxes").children("input:checked") 

le dará una gran variedad de los propios elementos. Si sólo necesita específicamente los nombres:

$("#checkboxes").children("input:checked").map(function() { 
    return this.name; 
}); 
+2

Creo que debería devolverse this.name o devolver $ (this) .attr ('nombre'); –

+4

'$ (" # checkboxes: checked "). Map (...)' sería más conciso. Como señala Jansen, debería ser '$ (this) .attr (" name ")'; pero consideraría un simple 'this.name' que debería ser igual de compatible. –

+0

sí, tienes razón, this.name sería mejor – Corey

6

Esto funciona para mí.

var selecteditems = []; 

$("#Div").find("input:checked").each(function (i, ob) { 
    selecteditems.push($(ob).val()); 
}); 
16

Necesitaba el recuento de todas las casillas que están marcadas. En lugar de escribir un ciclo lo hice

$(".myCheckBoxClass:checked").length; 

Compárelo con el número total de casillas de verificación para ver si son iguales. Esperamos que ayude a alguien

4

También podría darles todo el mismo nombre so they are an array, pero les dan diferentes valores:

<div id="checkboxes"> 
    <input type="checkbox" name="c_n[]" value="c_n_0" checked="checked" />Option 1 
    <input type="checkbox" name="c_n[]" value="c_n_1" />Option 2 
    <input type="checkbox" name="c_n[]" value="c_n_2" />Option 3 
    <input type="checkbox" name="c_n[]" value="c_n_3" checked="checked" />Option 4 
</div> 

entonces se puede obtener sólo el valor de sólo los pasaban los using map :

$('#checkboxes input:checked[name="c_n[]"]') 
      .map(function() { return $(this).val(); }).get() 
Cuestiones relacionadas