2011-12-11 23 views
147

tengo una lista de casillas de verificación:encontrar toda casilla sin marcar en jQuery

<input type="checkbox" name="answer" id="id_1' value="1" /> 
<input type="checkbox" name="answer" id="id_2' value="2" /> 
... 
<input type="checkbox" name="answer" id="id_n' value="n" /> 

puedo recoger todos los valores de casillas controladas; mi pregunta es ¿cómo puede obtener todos los valores de las casillas de verificación sin marcar? Probé:

$("input:unchecked").val(); 

para obtener el valor de una casilla sin marcar, pero tengo:

de error de sintaxis, expresión no reconocida: sin control.

¿Alguien puede arrojar luz sobre este tema? ¡gracias!

+2

posible duplicado de [jQuery: Encontrar Todos los no seleccionados casillas de verificación, para] (http://stackoverflow.com/questions/1093350/jquery -find-all-unlected-checkboxes-how-to) –

+1

Posible duplicado de [¿Cómo encontrar todas las casillas de verificación no seleccionadas?] (https://stackoverflow.com/questions/1093350/how-to-find-all-unselected-checkboxes) – jacefarm

Respuesta

335

Como indica el mensaje de error, jQuery no incluye un selector :unchecked.
lugar, es necesario invertir el selector :checked:

$("input:checkbox:not(:checked)") 
+1

¿Es necesaria la 'entrada'? – kapa

+18

@bazmegakapa: No, pero es más rápido. http://api.jquery.com/checkbox-selector/ – SLaks

+2

Y el uso de la entrada [type = checkbox] es el más rápido. – jClark

21

$("input:checkbox:not(:checked)") Le conseguirá las casillas no marcadas.

+3

Eso incluye todos los cuadros de texto. – SLaks

10
$.extend($.expr[':'], { 
     unchecked: function (obj) { 
      return ((obj.type == 'checkbox' || obj.type == 'radio') && !$(obj).is(':checked')); 
     } 
    }); 


$("input:unchecked") 
2
$("input[type='checkbox']:not(:checked):not('\#chkAll\')").map(function() { 
    var a = ""; 
    if (this.name != "chkAll") { 
     a = this.name + "|off"; 
    } 
    return a; 
}).get().join(); 

Esto recuperará todas las casillas sin marcar y excluir la casilla de verificación "chkAll" que utilizo para comprobar | desactive todas las casillas de verificación. Como quiero saber qué valor estoy pasando a la base de datos, los desactivo, ya que las casillas de verificación me dan un valor de on.

//looking for unchecked checkboxes, but don’t include the checkbox all that checks or unchecks all checkboxes 
//.map - Pass each element in the current matched set through a function, producing a new jQuery object containing the return values. 

//.get - Retrieve the DOM elements matched by the jQuery object. 
//.join - (javascript) joins the elements of an array into a string, and returns the string.The elements will be separated by a specified separator. The default separator is comma (,). 
+1

No debe incluir algo en su respuesta que sea completamente irrelevante para el PO. Él no usa un cuadro 'chkAll', ¿por qué mencionarlo? – MMM

2

Se puede utilizar la siguiente manera:

$(":checkbox:not(:checked)") 
0
$(".clscss-row").each(function() { 
if ($(this).find(".po-checkbox").not(":checked")) { 
       // enter your code here 
      } }); 
+1

¡Bienvenido a StackOverflow! Agregue una explicación a su código, para que otros usuarios (para quienes esto sea lo que están buscando) sepan lo que hace su código. –

Cuestiones relacionadas