2011-01-25 16 views
14

Quiero contar cuántas casillas de verificación de mi página se seleccionan usando jQuery. He escrito el siguiente código:Cómo cuento cuántas casillas de verificación se seleccionan en una página con jQuery

 var numberOfCheckboxesSelected = 0; 
     $(':checkbox').each(function(checkbox) { 
      if (checkbox.attr('checked')) 
       numberOfCheckboxesSelected++; 
     }); 

Sin embargo, mis errores de código a cabo con el mensaje "El objeto no acepta esta propiedad o método" en la tercera línea.

¿Cómo puedo contar cuántas casillas de verificación se seleccionan en mi página?

Respuesta

35

jQuery admite el pseudo selector :checked.

var n = $("input:checked").length; 

Esto funcionará para botones de opción y casillas de verificación. Si lo que desea es casillas de verificación, sino que también tienen botones de radio en la página:

var n = $("input:checkbox:checked").length; 
+3

Debería hacer 'input: checkbox' en lugar de simplemente': ​​checkbox', por lo que jQuery no mira los elementos * all * en la página. – user113716

+3

@patrick debidamente anotado y actualizado, gracias! – Stephen

5

probar este (para evitar contar los botones de radio seleccionados):

var numberOfCheckboxesSelected = $('input[type=checkbox]:checked').length; 
2

El primer argumento pasado a la devolución de llamada en each es el índice, no el elemento. Debe utilizar this o un segundo argumento:

$(':checkbox').each(function(idx, checkbox) { 
     if (checkbox.attr('checked')) 
      numberOfCheckboxesSelected++; 
}); 

Por otra parte, la manera más fácil de hacer esto es seleccionar sólo los elementos controladas con el selector :checked y después comprobar length la propiedad de la selección:

var numberOfCheckboxesSelected = $('input:checkbox:checked').length; 
1
$("input:checked").length 

esto devolverá la cantidad de casillas marcadas.

Cuestiones relacionadas