2012-03-01 10 views
105

Estoy tratando de establecer un botón de opción. Quiero configurarlo usando el valor o la identificación.jQuery establecer el botón de opción

Esto es lo que he intentado.

$('input:radio[name=cols]'+" #"+newcol).attr('checked',true); 

newcol es la identificación del botón de opción.

Quizás una pequeña edición esté en orden.

Hay dos conjuntos de cajas de radio, una con cols y la otra con filas. Entonces veo el punto de no usar los identificadores. Mi error. Así que tengo como un ejemplo:

<input type="radio" name="rows" class="listOfCols" 
    style="width: 50%; " value="Site"></input> 

y

<input type="radio" name="cols" class="listOfCols" 
    style="width: 50%; " value="Site"></input> 

con el id de retirada, y necesito establecer la correcta.

+5

posible duplicado de [cómo configurar la opción de radio controlada onload con jQuery] (http://stackoverflow.com/questions/871063/how-to-set-radio-option-checked-onload-with-jquery) –

+0

Eso es lo que estaba buscando Chris. Gracias – mike628

+0

@ mike628 ¡Debería aceptar una de las respuestas! –

Respuesta

168

Su selector busca el descendiente de un elemento input:radio[name=cols] que tiene la identificación de newcol (bien el valor de esa variable).

Tal vez puedas probar (ya que usted está seleccionando por ID de todos modos):

$('#' + newcol).prop('checked',true); 

Aquí es una demostración: http://jsfiddle.net/jasper/n8CdM/1/

Además, a partir de jQuery 1.6 perferred el método de alterar una propiedad es .prop() : http://api.jquery.com/prop

+5

+1 para 'prop' vs' attr'. 'attr' en desuso para las propiedades y ya no funciona en jQuery 2.0)) – gavenkoa

+2

compruebe la respuesta por @Chococroc – Foreever

14

En el selector parece que intenta obtener algún elemento anidado de su botón de opción con una identificación determinada. Si desea comprobar un botón de opción, debe seleccionar este botón de selección en el selector y no otra cosa:

$('input:radio[name="cols"]').attr('checked', 'checked'); 

Esto supone que tiene el botón de opción siguiente en su margen de beneficio:

<input type="radio" name="cols" value="1" /> 

Si el botón de radio tenía un id:

<input type="radio" name="cols" value="1" id="myradio" /> 

usted podría utilizar directamente un selector ID:

$('#myradio').attr('checked', 'checked'); 
+0

Si hay múltiples radios con el nombre 'cols',' $ ('input: radio [name = "cols"]'). Attr ('checked', 'checked'); 'seleccionará solo el último. Ejecutará el código en cada uno, pero cada vez que establece la propiedad 'checked', el elemento previamente configurado se desarma. Aquí hay una demostración: http://jsfiddle.net/jasper/n8CdM/2/ – Jasper

+0

@Jasper, sí, eso es cierto. Es por eso que sugerí usar un selector de id. –

2

Dado que newcol es la ID del botón de opción, simplemente puede usarlo como se indica a continuación.

$("#"+newcol).attr('checked',true); 
7

¿Por qué necesita 'input:radio[name=cols]'. No conozca su html, pero suponiendo que los ID sean únicos, simplemente puede hacerlo.

$('#'+newcol).prop('checked', true); 
6

Prueba esto: cuestiones

$("#" + newcol).attr("checked", "checked"); 

que he tenido con attr("checked", true), por lo que tienden a usar lo anterior en su lugar.

Además, si tiene la identificación, entonces no necesita esa otra cosa para la selección. Una identificación es única.

+1

prop es mejor que attr para cosas como esta – RozzA

+0

attr se ha ido en jQuery 1.9+ Use prop. –

+0

Tiene razón, pero en última instancia, depende de su situación específica. Si su código siempre se ejecutará con jQuery 1.6+, entonces prop es el camino a seguir. Pero si su código se puede ejecutar en versiones anteriores, entonces la solución no es tan sencilla. Por ejemplo, mantengo el plugin jQuery PickList, y soportamos jQuery 1.4+, así que simplemente usar prop no es una opción. Este es un boleto abierto, así que si tienes alguna sugerencia elegante, me encantaría escucharlos; Simplemente no he tenido tiempo para investigar aún. –

61

he encontrado la respuesta aquí:
https://web.archive.org/web/20160421163524/http://vijayt.com/Post/Set-RadioButton-value-using-jQuery

Básicamente, si usted quiere comprobar un botón de radio, debe pasar el valor como una matriz:

$('input:radio[name=cols]').val(['Site']); 
$('input:radio[name=rows]').val(['Site']); 
+1

funcionó perfectamente para mi escenario. ¡también muy elegante! – kneidels

+0

Hola ese enlace no tiene contenido sugerido.¿Por qué siguen rechazando mi edición para eliminar el enlace? No contiene nada respecto al asunto. –

+0

@MenukaIshan, el punto es: dar crédito. El enlace está disponible en web.archive.org, y el tipo que lo escribió la primera vez y de quien tengo la idea de la respuesta tiene que recibir su crédito. No elimine el enlace, y si desea ver la publicación original, copie y pegue el enlace (no sé por qué va a la página anterior en lugar de a web.archive.org) – Chococroc

10

puedes probar el siguiente código :

$("input[name=cols][value=" + value + "]").attr('checked', 'checked'); 

Esto configurará el atributo comprobado para las columnas de radio y el valor como se especifica.

+1

'. ... el concepto más importante para recordar sobre el atributo marcado es que no se corresponde con la propiedad marcada. Fuente: http://api.jquery.com/attr/ – Jasper

0

Usted puede simplemente utilizar:

$("input[name='cols']").click(); 
0

La respuesta elegida funciona en este caso.

Pero la pregunta era sobre encontrar el elemento basado en radiogroup y la identificación dinámica, y la respuesta también puede dejar el botón de opción mostrado no afectado.

Esta línea selecciona exactamente lo que se pidió mientras se muestra el cambio en la pantalla también.

$('input:radio[name=cols][id='+ newcol +']').click(); 
2

Usando .filter() también funciona, y es flexible para la identificación, valor, nombre:

$('input[name="cols"]').filter("[value='Site']").attr('checked', true);

(visto en this blog)

+0

Creo que esta es una respuesta igualmente válida, pero debería usar el método prop(): $ ('input [name = "cols"]'). filter ("[value = 'Site']"). prop ('checked', true) ;. El usuario quiere establecer por "valor o id". Puede haber ocasiones en las que no desee establecer valores de id para cada opción de radio, por lo que es útil obtener el nombre y filtrar por valor. –

Cuestiones relacionadas