Me gustaría hacer algo como esto para marcar checkbox
usando jQuery :
$(".myCheckBox").checked(true);
o
$(".myCheckBox").selected(true);
¿Existe tal cosa?
$("#mycheckbox").click();
Me gustaría hacer algo como esto para marcar checkbox
usando jQuery :
$(".myCheckBox").checked(true);
o
$(".myCheckBox").selected(true);
¿Existe tal cosa?
$("#mycheckbox").click();
Respuestas:
Uso .prop()
:
$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
Si está trabajando con un solo elemento, siempre puede acceder al subyacente HTMLInputElement
y modificar su .checked
propiedad:
$('.myCheckbox')[0].checked = true;
$('.myCheckbox')[0].checked = false;
El beneficio de usar los métodos .prop()
y en .attr()
lugar de esto es que funcionarán en todos los elementos coincidentes.
El .prop()
método no está disponible, por lo que debe usarlo .attr()
.
$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);
Tenga en cuenta que este es el enfoque utilizado por las pruebas unitarias de jQuery anteriores a la versión 1.6 y es preferible utilizarlo, $('.myCheckbox').removeAttr('checked');
ya que este último, si la casilla se marcó inicialmente, cambiará el comportamiento de una llamada .reset()
en cualquier formulario que lo contenga, algo sutil pero probablemente cambio de comportamiento no deseado.
Para más contexto, se puede encontrar una discusión incompleta de los cambios en el manejo del checked
atributo / propiedad en la transición de 1.5.x a 1.6 en las notas de la versión 1.6 y en la sección Atributos vs. Propiedades de la .prop()
documentación .
DOMElement.checked = true
". Pero sería insignificante, porque es solo un elemento ...
$(element).prop('checked')
es una pérdida total de escritura. element.checked
existe y se debe utilizar en los casos en los que ya tieneelement
Utilizar:
$(".myCheckbox").attr('checked', true); // Deprecated
$(".myCheckbox").prop('checked', true);
Y si desea verificar si una casilla está marcada o no:
$('.myCheckbox').is(':checked');
Esta es la forma correcta de marcar y desmarcar casillas de verificación con jQuery, ya que es estándar multiplataforma, y le permitirá de forma reposts.
$('.myCheckBox').each(function(){ this.checked = true; });
$('.myCheckBox').each(function(){ this.checked = false; });
Al hacer esto, está utilizando estándares de JavaScript para marcar y desmarcar casillas de verificación, por lo que cualquier navegador que implemente correctamente la propiedad "marcada" del elemento de casilla de verificación ejecutará este código sin problemas. Esto debería ser todos los principales navegadores, pero no puedo probar antes de Internet Explorer 9.
El problema (jQuery 1.6):
Una vez que un usuario hace clic en una casilla de verificación, esa casilla deja de responder a los cambios de atributo "marcado".
Aquí hay un ejemplo de que el atributo de la casilla de verificación no puede hacer el trabajo después de que alguien haya hecho clic en la casilla de verificación (esto sucede en Chrome).
La solución:
Al usar la propiedad "marcada" de JavaScript en los elementos DOM , podemos resolver el problema directamente, en lugar de tratar de manipular el DOM para que haga lo que queremos que haga.
Este complemento alterará la propiedad marcada de cualquier elemento seleccionado por jQuery y marcará y desmarcará con éxito las casillas de verificación en todas las circunstancias. Entonces, si bien esto puede parecer una solución agobiante, mejorará la experiencia del usuario de su sitio y ayudará a evitar la frustración del usuario.
(function( $ ) {
$.fn.checked = function(value) {
if(value === true || value === false) {
// Set the value of the checkbox
$(this).each(function(){ this.checked = value; });
}
else if(value === undefined || value === 'toggle') {
// Toggle the checkbox
$(this).each(function(){ this.checked = !this.checked; });
}
return this;
};
})( jQuery );
Alternativamente, si no desea usar un complemento, puede usar los siguientes fragmentos de código:
// Check
$(':checkbox').prop('checked', true);
// Un-check
$(':checkbox').prop('checked', false);
// Toggle
$(':checkbox').prop('checked', function (i, value) {
return !value;
});
removeAttr('checked')
lugar deattr('checked', false)
checked
cambios de atributos, independientemente del método utilizado para cambiarlos.
$('.myCheckBox').prop('checked', true)
De esa manera, se aplicará automáticamente a todo el conjunto de elementos coincidentes (solo cuando se configura, sin embargo, obtener solo es el primero)
prop
Definitivamente es la forma apropiada de establecer atributos en un elemento.
Tu puedes hacer
$('.myCheckbox').attr('checked',true) //Standards compliant
o
$("form #mycheckbox").attr('checked', true)
Si tiene un código personalizado en el evento onclick para la casilla de verificación que desea activar, use este en su lugar:
$("#mycheckbox").click();
Puede desmarcar eliminando el atributo por completo:
$('.myCheckbox').removeAttr('checked')
Puede marcar todas las casillas de verificación de esta manera:
$(".myCheckbox").each(function(){
$("#mycheckbox").click()
});
$(".myCheckbox").click()
.attr
lugar de .prop
.
$("#mycheckbox").click();
trabajado para mí, ya que estaba escuchando evento de cambio y también .attr
y .prop
no lo hizo evento de cambio de fuego.
También puede extender el objeto $ .fn con nuevos métodos:
(function($) {
$.fn.extend({
check : function() {
return this.filter(":radio, :checkbox").attr("checked", true);
},
uncheck : function() {
return this.filter(":radio, :checkbox").removeAttr("checked");
}
});
}(jQuery));
Entonces puedes simplemente hacer:
$(":checkbox").check();
$(":checkbox").uncheck();
O puede que desee darles nombres más únicos como mycheck () y myuncheck () en caso de que use alguna otra biblioteca que use esos nombres.
.attr
lugar de .prop
.
$("#mycheckbox")[0].checked = true;
$("#mycheckbox").attr('checked', true);
$("#mycheckbox").click();
El último activará el evento de clic para la casilla de verificación, los otros no. Entonces, si tiene un código personalizado en el evento onclick para la casilla de verificación que desea activar, use el último.
.attr
lugar de .prop
.
click
evento no es confiable en Firefox y Edge.
Para marcar una casilla de verificación, debe usar
$('.myCheckbox').attr('checked',true);
o
$('.myCheckbox').attr('checked','checked');
y para desmarcar una casilla de verificación, siempre debe establecerla en falso:
$('.myCheckbox').attr('checked',false);
Si lo haces
$('.myCheckbox').removeAttr('checked')
elimina todo el atributo y, por lo tanto, no podrá restablecer el formulario.
MALA DEMO jQuery 1.6 . Creo que esto está roto. Para 1.6 voy a hacer una nueva publicación sobre eso.
NUEVA DEMO DE TRABAJO jQuery 1.5.2 funciona en Chrome.
Ambas demostraciones usan
$('#tc').click(function() {
if ( $('#myCheckbox').attr('checked')) {
$('#myCheckbox').attr('checked', false);
} else {
$('#myCheckbox').attr('checked', 'checked');
}
});
$(".mycheckbox").prop("checked", true/false)
Esto selecciona elementos que tienen el atributo especificado con un valor que contiene la subcadena dada "ckbItem":
$('input[name *= ckbItem]').prop('checked', true);
Seleccionará todos los elementos que contengan ckbItem en su atributo de nombre.
Asumiendo que la pregunta es ...
Recuerde que en un conjunto de casillas de verificación típico, todas las etiquetas de entrada tienen el mismo nombre, difieren según el atributovalue
: no hay ID para cada entrada del conjunto.
La respuesta de Xian se puede ampliar con un selector más específico , utilizando la siguiente línea de código:
$("input.myclass[name='myname'][value='the_value']").prop("checked", true);
Me falta la solución. Siempre usaré:
if ($('#myCheckBox:checked').val() !== undefined)
{
//Checked
}
else
{
//Not checked
}
.val()
siempre volverá undefined
cuando se invoquen elementos 0 para detectar que un objeto jQuery está vacío, cuando podría simplemente verifique su .length
lugar): consulte stackoverflow.com/questions/901712/… para obtener enfoques más legibles.
Para marcar una casilla de verificación con jQuery 1.6 o superior, simplemente haga esto:
checkbox.prop('checked', true);
Para desmarcar, use:
checkbox.prop('checked', false);
Esto es lo que me gusta usar para alternar una casilla de verificación usando jQuery:
checkbox.prop('checked', !checkbox.prop('checked'));
Si está utilizando jQuery 1.5 o inferior:
checkbox.attr('checked', true);
Para desmarcar, use:
checkbox.attr('checked', false);
Aquí hay una manera de hacerlo sin jQuery
function addOrAttachListener(el, type, listener, useCapture) {
if (el.addEventListener) {
el.addEventListener(type, listener, useCapture);
} else if (el.attachEvent) {
el.attachEvent("on" + type, listener);
}
};
addOrAttachListener(window, "load", function() {
var cbElem = document.getElementById("cb");
var rcbElem = document.getElementById("rcb");
addOrAttachListener(cbElem, "click", function() {
rcbElem.checked = cbElem.checked;
}, false);
}, false);
<label>Click Me!
<input id="cb" type="checkbox" />
</label>
<label>Reflection:
<input id="rcb" type="checkbox" />
</label>
Aquí hay un código para marcar y desmarcar con un botón:
var set=1;
var unset=0;
jQuery( function() {
$( '.checkAll' ).live('click', function() {
$( '.cb-element' ).each(function () {
if(set==1){ $( '.cb-element' ).attr('checked', true) unset=0; }
if(set==0){ $( '.cb-element' ).attr('checked', false); unset=1; }
});
set=unset;
});
});
Actualización: Aquí está el mismo bloque de código que usa el nuevo método Jquery 1.6+ prop, que reemplaza attr:
var set=1;
var unset=0;
jQuery( function() {
$( '.checkAll' ).live('click', function() {
$( '.cb-element' ).each(function () {
if(set==1){ $( '.cb-element' ).prop('checked', true) unset=0; }
if(set==0){ $( '.cb-element' ).prop('checked', false); unset=1; }
});
set=unset;
});
});
.attr
lugar de .prop
.
Podemos usar elementObject
con jQuery para verificar el atributo:
$(objectElement).attr('checked');
Podemos usar esto para todas las versiones de jQuery sin ningún error.
Actualización: Jquery 1.6+ tiene el nuevo método de apoyo que reemplaza attr, por ejemplo:
$(objectElement).prop('checked');
.attr
lugar de .prop
.
Si está utilizando PhoneGap para el desarrollo de aplicaciones y tiene un valor en el botón que desea mostrar al instante, recuerde hacer esto
$('span.ui-[controlname]',$('[id]')).text("the value");
Descubrí que sin el lapso, la interfaz no se actualizará sin importar lo que hagas.
Aquí está el código y la demostración de cómo marcar varias casillas de verificación ...
http://jsfiddle.net/tamilmani/z8TTt/
$("#check").on("click", function () {
var chk = document.getElementById('check').checked;
var arr = document.getElementsByTagName("input");
if (chk) {
for (var i in arr) {
if (arr[i].name == 'check') arr[i].checked = true;
}
} else {
for (var i in arr) {
if (arr[i].name == 'check') arr[i].checked = false;
}
}
});
$("#check")
con llamadas de API DOM sin procesar document.getElementsByTagName("input")
me parece poco elegante, especialmente dado que los for
bucles aquí podrían evitarse mediante el uso .prop()
. Independientemente, esta es otra respuesta tardía que no agrega nada nuevo.
Otra posible solución:
var c = $("#checkboxid");
if (c.is(":checked")) {
$('#checkboxid').prop('checked', false);
} else {
$('#checkboxid').prop('checked', true);
}
Como @ livefree75 dijo:
jQuery 1.5.xy debajo
También puede extender el objeto $ .fn con nuevos métodos:
(function($) {
$.fn.extend({
check : function() {
return this.filter(":radio, :checkbox").attr("checked", true);
},
uncheck : function() {
return this.filter(":radio, :checkbox").removeAttr("checked");
}
});
}(jQuery));
Pero en las nuevas versiones de jQuery, tenemos que usar algo como esto:
jQuery 1.6+
(function($) {
$.fn.extend({
check : function() {
return this.filter(":radio, :checkbox").prop("checked", true);
},
uncheck : function() {
return this.filter(":radio, :checkbox").prop("checked",false);
}
});
}(jQuery));
Entonces puedes simplemente hacer:
$(":checkbox").check();
$(":checkbox").uncheck();
Si usa dispositivos móviles y desea que la interfaz se actualice y muestre la casilla de verificación como desmarcada, use lo siguiente:
$("#checkbox1").prop('checked', false).checkboxradio("refresh");
Tenga en cuenta las pérdidas de memoria en Internet Explorer antes de Internet Explorer 9 , como dice la documentación de jQuery :
En Internet Explorer anterior a la versión 9, el uso de .prop () para establecer una propiedad de elemento DOM en cualquier cosa que no sea un valor primitivo simple (número, cadena o booleano) puede causar pérdidas de memoria si la propiedad no se elimina (usando .removeProp ( )) antes de que el elemento DOM se elimine del documento. Para establecer valores de forma segura en objetos DOM sin pérdidas de memoria, use .data ().
.prop('checked',true)
.
Para marcar y desmarcar
$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
$('controlCheckBox').click(function(){
var temp = $(this).prop('checked');
$('controlledCheckBoxes').prop('checked', temp);
});
Esta es probablemente la solución más corta y fácil:
$(".myCheckBox")[0].checked = true;
o
$(".myCheckBox")[0].checked = false;
Aún más corto sería:
$(".myCheckBox")[0].checked = !0;
$(".myCheckBox")[0].checked = !1;
Aquí hay un jsFiddle también.
JavaScript simple es muy simple y mucho menos sobrecarga:
var elements = document.getElementsByClassName('myCheckBox');
for(var i = 0; i < elements.length; i++)
{
elements[i].checked = true;
}
No pude hacerlo funcionar usando:
$("#cb").prop('checked', 'true');
$("#cb").prop('checked', 'false');
Tanto verdadero como falso marcarían la casilla de verificación. Lo que funcionó para mí fue:
$("#cb").prop('checked', 'true'); // For checking
$("#cb").prop('checked', ''); // For unchecking
true
y false
y no 'true'
y 'false'
?
'false'
se convirtió en un valor booleano que resultó en una true
cadena vacía que se evalúa false
así que "funcionó". Ver este violín, por ejemplo, de lo que quiero decir.
Cuando marcó una casilla de verificación como;
$('.className').attr('checked', 'checked')
Puede que no sea suficiente. También debe llamar a la función a continuación;
$('.className').prop('checked', 'true')
Especialmente cuando eliminó la casilla de verificación del atributo marcado.
Aquí está la respuesta completa. usando jQuery
Lo pruebo y funciona al 100%: D
// when the button (select_unit_button) is clicked it returns all the checed checkboxes values
$("#select_unit_button").on("click", function(e){
var arr = [];
$(':checkbox:checked').each(function(i){
arr[i] = $(this).val(); // u can get id or anything else
});
//console.log(arr); // u can test it using this in google chrome
});
En jQuery,
if($("#checkboxId").is(':checked')){
alert("Checked");
}
o
if($("#checkboxId").attr('checked')==true){
alert("Checked");
}
En JavaScript
if (document.getElementById("checkboxID").checked){
alert("Checked");
}
.attr
lugar de .prop
.