2010-10-14 42 views
8

Necesito borrar todas las casillas de verificación cuando un usuario hace clic en una casilla de verificación. Más o menos el mismo comportamiento que un botón de radio. El usuario hace clic en la casilla de verificación 'A' y las casillas de verificación 'B' y 'C' están desmarcadas. Estoy usando jquery pero no puedo entender cómo lograr esto. ¿Algunas ideas?Desmarque todas las casillas de verificación

Éstos son cómo las casillas de verificación se establecen u:

<div class="sales_block_one"> 
<span class="sales_box_option_set"><input type="checkbox" value="1" id="exopt10i11553501716" name="optset[0][id]" /><label for="exopt10i11553501716">Test + &pound;100.00</label></span> 
<span class="sales_box_option_set"><input type="checkbox" value="2" id="exopt11i21553501716" name="optset[1][id]" /><label for="exopt11i21553501716">Test + &pound; 200.00</label></span> 
<span class="sales_box_option_set"><input type="checkbox" value="3" id="exopt12i31553501716" name="optset[2][id]" /><label for="exopt12i31553501716">Test 3 + &pound;400.00</label></span> 
</div> 
+2

por qué no estás utiliza botón de radio? esa es una manera simple. – klox

+1

@klox - tal vez el OP quiera el cheque (☑) en el diseño;) – Reigel

+0

Sí, sé que los botones de radio serían ideales pero no se pueden usar en la aplicación. – Thomas

Respuesta

17

si todas las casillas de verificación son hermanos, que es igual que este,

$(':checkbox').change(function(){ 

    if (this.checked) { 
     $(this).siblings(':checkbox').attr('checked',false); 
    } 

}); 

crazy demo

Bueno, si realmente quiere para copiar el comportamiento del botón de opción, tan simple como este,

$(':checkbox').change(function(){ 
     this.checked = true; 
     $(this).siblings(':checkbox').attr('checked',false);  
}); 

crazy demo


hermanos es cuando los elementos tienen un mismo padre/contenedor.

muestra

<div> 

<input type="checkbox" /><label>A</label> 
<input type="checkbox" /><label>B</label> 
<input type="checkbox" /><label>C</label> 
<input type="checkbox" />​<label>D</label> 

</div> 

en que, <input> s <label> y s son hermanos.


En su caso, que no es hermanos, puede hacerlo de esta manera,

$('.sales_block_one :checkbox').change(function() { 
    var $self = this; // save the current object - checkbox that was clicked. 
    $self.checked = true; // make the clicked checkbox checked no matter what. 
    $($self).closest('span') // find the closest parent span... 
     .siblings('span.sales_box_option_set') // get the siblings of the span 
     .find(':checkbox').attr('checked',false); // then find the checbox inside each span and then uncheck it. 
});​ 

crazy demo

more about traversing

+1

+1 esa es una forma mejor de usar "hermanos" – klox

+0

pregunta tonta: ¿qué constituye hermanos? Busqué en Google sin éxito. – Thomas

+0

ver edición, por favor ... – Reigel

1
$("#checkboxA").click(function() { 
    var checkedStatus = this.checked; 
    $("#checkboxB_And_C_Selector").each(function() { 
     this.checked = !checkedStatus; 
    }); 
}); 
+0

esto no funcionará exactamente como se esperaba porque hará que todas las demás cajas se verifiquen cuando haga clic para desmarcar cualquiera de los cuadros. –

Cuestiones relacionadas