2010-08-25 3 views
11

Je peux lire de façon prédictible la valeur d'un bouton radio jQueryUI, cependant, je ne suis pas en mesure de le définir par programme. Peu importe les méthodes que j'utilise pour modifier la valeur du bouton radio, l'interface jQueryUI ne mettra pas à jour son interface.jQueryUI Radio/boutons de contrôle ne changent pas par programme

<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

Où utilisez-vous l'interface utilisateur jQuery? –

Répondre

20

Une fois que vous mettez à jour la valeur, comme ceci:

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

Vous devez dire jQuery UI mettre à jour, comme ceci:

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

You can give it a try here.

+0

la partie des boutons de la question n'était pas là quand j'ai répondu. :/ –

+0

Je n'aurais jamais pensé à cela. Merci. – rebelliard

+0

@Yanick - Il était ... il a mentionné jQuery UI depuis le début, c'est pourquoi mon commentaire posté avant même que votre réponse s'enquiert à ce sujet :) –

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

** NOTE **

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

Ainsi:

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

Je suis vraiment désolé. Je ne pensais pas qu'il y aurait beaucoup de détails, étant donné qu'un bouton radio normal est assez simple. oO./ – rebelliard

8

je fais habituellement:

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

le Buttonset (« refresh ») appel est lié à l'événement de changement qui est tout simplement pas déclenché lorsque vous modifiez la valeur programatically - déclenchement il résout manuellement l'interface problème et vous ne je fais généralement pas besoin de vous soucier où le Buttonset est

1

a:

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

S'il vous plaît utiliser « prop » au lieu de « attr » pour changer le « vérifié » Etat.

Questions connexes