2010-08-25 11 views
11

Ich kann den Wert eines jQueryUI-Optionsfelds vorhersehbar lesen, ich kann es jedoch nicht programmgesteuert festlegen. Egal, mit welchen Methoden ich den Wert der Optionsschaltfläche ändere, die jQueryUI-Schnittstelle aktualisiert ihre Schnittstelle nicht.jQueryUI Radio/Check-Schaltflächen ändern sich nicht programmgesteuert

<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

Wo verwenden Sie jQuery UI? –

Antwort

20

Sobald Sie den Wert aktualisieren, wie folgt aus:

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

Sie müssen jQuery UI zu aktualisieren sagen, wie folgt aus:

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

You can give it a try here.

+0

der Buttonset-Teil der Frage war nicht da, als ich antwortete. :/ –

+0

Ich hätte nie darüber nachgedacht. Vielen Dank. – rebelliard

+0

@Yanick - Es war ... er erwähnt jQuery UI von Anfang an, deshalb mein Kommentar gepostet, noch bevor deine Antwort danach fragt :) –

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

** HINWEIS **

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

So:

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

Es tut mir sehr leid. Ich hätte einfach nicht gedacht, dass es zu solchen Details viel geben würde, wenn man bedenkt, dass ein normaler Radioknopf ziemlich geradlinig ist. oO./ – rebelliard

8

ich tun in der Regel ein:

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

die buttonset („refresh“) Aufruf der Änderungsereignis gebunden ist, das ist einfach nicht ausgelöst, wenn Sie den Wert programmatisch sind zu ändern - auslösenden es löst manuell den ui Problem und Sie müssen sich nicht darum kümmern, wo die buttonset ist

1

ich tun in der Regel ein:

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

Bitte „prop“ anstelle von „attr“ zu ändern, die „geprüft“ verwenden Zustand.

Verwandte Themen