2010-07-26 18 views
5

quiero seleccionar una casilla de verificación cuando se hace clic en un botón.

<form action="" method="post" id="form2"> 
    <input type="checkbox" id="checkone" value="one" name="one" /> 
    <input type="button" value="Click me" id="buttonone"/> 
</form> 

cuando he intentado lo siguiente, la casilla de verificación no estaba recibiendo seleccionado

$('#buttonone').click(function() { 
    $('#checkone').checked=true; 
}); 

Luego probé:

$('#buttonone').click(function() { 
    document.getElementById('checkone').checked=true; 
}); 

este tiempo fue seleccionado la casilla de verificación. ¿Por qué no se selecciona con la función jquery $?

+0

@illarra - Esa no es la mejor manera de hacerlo, esa es la mejor manera de un principiante a jQuery * * rápidamente, pero no de manera eficiente * * resolver el problema ... que también el enlace no responde la pregunta en absoluto. Me preguntó * ¿por qué no funciona '.checked = true' aquí?? ... No veo eso cubierto en absoluto, y dudo que encuentres la respuesta en google en solo 10 segundos. –

+0

Tienes razón @Nick Craver, entendí mal la segunda parte de la pregunta aquí. Traté de deshacer mi -1 pero no puedo ahora. La respuesta de @Anurag lo deja en claro. – eillarra

+0

@illarra - Se ha editado, liberando su voto ahora :) –

Respuesta

11

Trate

$('#checkone').attr('checked', true); 

o

$('#checkone').get(0).checked = true; 

o

$('#checkone')[0].checked = true; // identical to second example 

La razón por la que su primer código no funcionó es porque estaba tratando de establecer la propiedad checked en un jQuery objeto que no tendrá ningún efecto visible ya que solo funciona en el objeto DOM nativo.

Al llamar al get(0) o al acceder al primer elemento [0], recuperamos el elemento DOM nativo y podemos usarlo normalmente como en el segundo ejemplo. De forma alternativa, establezca el atributo checked utilizando la función attr de jQuery que debería funcionar también.

+0

guau .... esa fue una respuesta rápida .. gracias por responder tan rápido ... voy a intentar ahora – Anish

+0

bueno muchas gracias ... está funcionando .... ¿Puedes explicar por qué – Anish

+0

@anish - Agregué una explicación, por favor avíseme si aún no está claro, y detallaré más – Anurag

0

Trate

$('#checkone').attr('checked', true); 

Usted no tiene acceso directo a las propiedades del objeto DOM porque jQuery opera en colecciones ($(selector) es una matriz). Es por eso que tiene funciones definidas para manipular el contenido de los elementos devueltos.

2

Es necesario utilizar .attr()para el objeto jQuery, así:

$('#buttonone').click(function() { 
    $('#checkone').attr('checked', true); 
}); 

pero es mejor que hacerlo de la manera DOM, así:

$('#buttonone').click(function() { 
    $('#checkone')[0].checked = true; //get the DOM element, .checked is on that 
}); 

O, por completo sin jQuery:

document.getElementById('buttonone').onclick = function() { 
    document.getElementById('checkone').checked = true; 
}; 
+0

Ese segundo ejemplo resalta el problema. Los jQ recién llegados a veces se olvidan de que están trabajando con un objeto jQ, no con un objeto DOM. – jasongetsdown

+0

+1. Una de mis cosas favoritas se maneja muy bien :) –

+0

@jasongetsdown - jQ los recién llegados a veces se olvidan de que están trabajando con un objeto jQ, no con un objeto DOM. buen consejo. @Nick Craver: por qué $ ('# checkone') [0] .checked = true; mucho mejor. ¿Esto lo hará funcionar rápido? – Anish

0

prueba

$('#checkone').attr('checked', true); 

Cleary google para "jQuery comprobar una casilla de verificación" era el camino a seguir

0

O simplemente podría hacer

$('#buttonone').click(function() { 
    $('#checkone')[0].checked=true; 
}); 

es porque ".checked" no es parte de jQuery y Está intentando usarlo en un objeto jQuery. Si indizas un objeto jQuery en [0], obtienes el objeto JavaScript sin formato que tiene ".checked".

Más aquí: http://phrappe.com/javascript/convert-a-jquery-object-to-raw-dom-object/

1

Ninguna de estas respuestas trabajado para mí porque yo tenía incorrectamente múltiples radios con el mismo nombre atributos:

<div id="group-one"> 
    <input type="radio" name="groups" value="1" checked="checked" /> 
    <input type="radio" name="groups" value="2" /> 
</div> 
<div id="group-two"> 
    <input type="radio" name="groups" value="1" checked="checked" /> 
    <input type="radio" name="groups" value="2" /> 
</div> 

Javascript no reconocerá el atributo checked (obviamente). Esto fue el resultado de usar include para agregar una sección similar de HTML varias veces. Obviamente, al hacer clic en un botón de radio, se desactivará la radio que alterna con el mismo nombre.

Aquí hay una jsFiddle para demostrar que dos elementos de radio pueden tener el atributo checked pero sólo el último es en realidad verificado:

http://jsfiddle.net/bozdoz/5ecq8/

Una vez más, bastante obvio, pero, posiblemente, algo a tener en cuenta: eliminar id y name atributos de los archivos que tiene la intención de incluir en otros archivos varias veces.

0

probar esto

$('#buttonone').click(function() { 
    $('#checkone').prop('checked', true); 
}); 
Cuestiones relacionadas