JQuery: busque un botón de opción por valor

Respuestas:

142

Prueba esto:

$(":radio[value=foobar]")

Esto seleccionará todos los botones de opción con el atributo value="foobar".

Gumbo
fuente
Gracias, lo usé como tal: jQuery.each (cookieObj, function (i, val) {$ (": radio [value = val]"). Attr ('comprobado', true);});
furgoneta
3
@prueba: prueba esto en su lugar:function(i, val) { $(":radio[value="+val+"]").attr('checked',true); }
Gumbo
1
@Gumbo si le damos un nombre a esa función, ¿podemos llamarla así ?: $ checkRadioValues ​​= findChecked ("valor");
Ben Sewards
25

Estoy usando jQuery 1.6 y esto no funcionó para mí: $(":radio[value=foobar]").attr('checked',true);

En cambio, estoy usando: $('[value="foobar"]').attr('checked',true); y funciona muy bien.

El código real que estoy usando borra las radios primero y usa en proplugar deattr

$('[name=menuRadio]').prop('checked',false);

$('[name=menuRadio][value="Bar Menu"]').prop('checked',true);
dogatónico
fuente
¿Es este un error que se solucionó? ¿O deberíamos poner comillas alrededor del valor?
Simon_Weaver
19

Esto también se puede lograr con esto:

$('input[type="radio"][value="aaa"]').val();

Esto seleccionará la radio que tiene el valor de aaa


Con .filter()método:

var radio =  $('input[type="radio"]').filter(function(){
                       return this.value === 'aaa';
                      }).val();
Jai
fuente
1
esto realmente seleccionará todos los botones de radio y cambiará sus valores para aaaluego devolver el'aaa'
bendman
5

digamos que tiene algo como esto en el HTML:

<fieldset>
    <input type="radio" name="UI_opt" value="alerter" checked> Alerter<br/>
    <input type="radio" name="UI_opt" value="printer"> Printer<br/>
    <input type="radio" name="UI_opt" value="consoler"> Consoler<br/>
</fieldset>

entonces este tipo de cosas funciona.

$("fieldset input[name='UI_opt'][checked]").val()
Dylan Trevena
fuente
2

Un selector completo se vería así:

bool shipToBilling = $("[name=ShipToBillingAddress][value=True]")

dado que probablemente tenga más de un grupo de botones de opción como este

<input name="ShipToBillingAddress" type="radio" value="True" checked="checked">
<input name="ShipToBillingAddress" type="radio" value="False">

<input name="SomethingElse" type="radio" value="True" checked="checked">
<input name="SomethingElse" type="radio" value="False">

Usar un selector de ID como este (siguiente ejemplo) es malo porque no debería tener varios elementos con la misma ID. Supongo que alguien que encuentre esta pregunta ya sabe que esto es malo.

$("#DidYouEnjoyTheMovie:radio[value=yes]")

Lo siguiente sobre :radiopuede ser de interés o no

Debido a que: radio es una extensión de jQuery y no forma parte de la especificación CSS, las consultas que usan: radio no pueden aprovechar el aumento de rendimiento proporcionado por el método DOM nativo querySelectorAll (). Para un mejor rendimiento en los navegadores modernos, use [type = "radio"] en su lugar.

Simon_Weaver
fuente