2011-11-21 18 views

Respuesta

618

Javascript:

// Check 
document.getElementById("checkbox").checked = true; 

// Uncheck 
document.getElementById("checkbox").checked = false; 

jQuery (1.6 +):

// Check 
$("#checkbox").prop("checked", true); 

// Uncheck 
$("#checkbox").prop("checked", false); 

jQuery (1,5):

// Check 
$("#checkbox").attr("checked", true); 

// Uncheck 
$("#checkbox").attr("checked", false); 
+0

El uso de .prop no parece funcionar con Jquery 1.11.2 en Firefox con archivos alojados localmente. .attr lo hace. No he probado más completamente. Aquí está el código: '' 'personContent.find (" [data-name = '"+ pass.name +"'] "). Children ('input'). Attr ('checked', true); '' ' –

+2

¿Deberíamos usar' attr' o 'prop'? – Black

26

a comprobar:

document.getElementById("id-of-checkbox").checked = true; 

desmarcar:

document.getElementById("id-of-checkbox").checked = false; 
6

Podemos comprobar una casilla de partículas como,

$('id of the checkbox')[0].checked = true 

y desactive por,

$('id of the checkbox')[0].checked = false 
+1

Realmente no necesita el índice de matriz si solo está seleccionando un elemento. Pero supongo que si quieres ser explícito. jaja – Rizowski

+4

@Rizowski Necesitas el índice para obtener el elemento nativo html - los objetos jQuery no tienen una propiedad "marcada" –

+0

Pero también podríamos estar usando el jQuery en ese punto – damd

69

comportamiento importante que aún no se ha mencionado:

Establecer mediante programación el atributo comprobado, no activa el evento change de la casilla de verificación.

Véase, por sí mismo en este violín:
http://jsfiddle.net/fjaeger/L9z9t04p/4/

(violín probado en Chrome 46, Firefox 41 e IE 11)

El click() método

Algún día puede que te encuentres código de escritura, que se basa en el evento que se está disparando. Para asegurarse de que se desencadene el evento, llame al método click() del elemento de casilla, así:

document.getElementById('checkbox').click(); 

Sin embargo, esto cambia el estado de la casilla marcada, en lugar de establecer específicamente a true o false. Recuerde que el evento change solo debe activarse, cuando el atributo verificado realmente cambia.

También se aplica a la forma en jQuery: estableciendo el atributo utilizando prop o attr, no se dispara el evento change.

Configuración checked a un valor específico

Se podría probar el atributo checked, antes de llamar al método click().Ejemplo:

function toggle(checked) { 
    var elm = document.getElementById('checkbox'); 
    if (checked != elm.checked) { 
    elm.click(); 
    } 
} 

Leer más sobre el método clic aquí:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click

+4

Esa es una buena respuesta pero personalmente lo haría Prefiere disparar el evento de cambio en lugar de llamar al clic() 'elm.dispatchEvent (new Event ('change'));' –

+0

@VictorSharovatov ¿Por qué prefiere disparar el evento de cambio? – PeterCo

+0

Puedo estar de acuerdo solo parcialmente: muchos navegadores web con AdBlocks defienden el DOM del clic virtual() debido a acciones no deseadas de los anuncios – pkolawa

5

me gustaría señalar, que estableciendo el atributo 'marcado' a una cadena no vacía conduce a una casilla marcada.

lo tanto, si se establece el atributo 'marcado' a "falsa", se comprobará la casilla de verificación. Tenía que establezca el valor en la cadena vacía, nula o el valor booleano falso con el fin de asegurarse de que la casilla de verificación no se comprobó.

+2

Esto se debe a que una cadena no vacía se considera veraz. –

2
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.selecctall').click(function (event) { 
      if (this.checked) { 
       $('.checkbox1').each(function() { 
        this.checked = true; 
       }); 
      } else { 
       $('.checkbox1').each(function() { 
        this.checked = false; 
       }); 
      } 
     }); 

    }); 

</script> 
2

intenta esto:

//Check 
document.getElementById('checkbox').setAttribute('checked', 'checked'); 

//UnCheck 
document.getElementById('chk').removeAttribute('checked'); 
0
function setCheckboxValue(checkbox,value) { 
    if (checkbox.checked!=value) 
     checkbox.click(); 
} 
Cuestiones relacionadas