2010-08-25 13 views
11

Puedo leer el valor de un botón de selección jQueryUI, sin embargo, no puedo configurarlo mediante programación. No importa qué métodos use para cambiar el valor del botón de opción, la interfaz jQueryUI no actualizará su interfaz.jQueryUI Botones de radio/comprobación que no cambian por programación

<div id="radio"> 
    <input type="radio" name="radio" value="true" checked="checked" />Yes 
    <input type="radio" name="radio" value="false" />No 
</div> 

<script type="text/javascript"> 
    $('#radio').buttonset(); 

    // One of the many ways that won't work. 
    $('[name="radio"]:radio:checked').val("false"); 
</script> 
+0

¿Dónde está usando jQuery UI? –

Respuesta

20

Una vez que actualice el valor, como este:

$('[name="radio"][value="false"]').attr("checked", true); 

tiene que decirle a jQuery UI al día, así:

$('#radio').buttonset("refresh"); 

You can give it a try here.

+0

la parte del ojal de la pregunta no estaba allí cuando respondí. :/ –

+0

Nunca hubiera pensado en esto. Gracias. – rebelliard

+0

@Yanick - Fue ... mencionó la interfaz de usuario de jQuery desde el principio, es por eso que mi comentario publicado incluso antes de su respuesta pregunta acerca de él :) –

4
$('[name="state"]:radio:checked').attr('checked', true); // checked 
$('[name="state"]:radio:checked').removeAttr('checked'); // unchecked 

** ** NOTA

$(':radio').val(); // same as $(':radio').attr('value'); 

Por lo tanto:

$(':radio[checked]').val(); // -> the value of the first checked radio button found 
+0

Lo siento mucho. Simplemente no creo que haya mucho para esos detalles, dado que un botón de opción normal es bastante directo. oO./ – rebelliard

8

que suele hacer un:

$('[name="radio"][value="false"]').attr("checked", true).trigger("change"); 

la buttonset ("refresh") llamada está ligado al evento de cambio que simplemente no se activa cuando se está cambiando el valor programáticamente - desencadenante que resuelve manualmente la interfaz de usuario cuestión y que no es necesario que preocuparse de donde la buttonset es

1

que suele hacer un:

$('[name="radio"][value="false"]').prop("checked", true).trigger("change"); 

utilice "prop" en lugar de "attr" para cambiar el "marcado" estado.

Cuestiones relacionadas