2013-09-23 6 views
6

bricht Ich baue eine Editor-Funktion auf einer Website ein jQuery buttonset auf Basis von Radio-Buttons. Als ich den Artikel in den Editor laden muß ich das ausgewählte Optionsfeld setzen und dann, natürlich, kann der Benutzer die Option ändern und es ist in die Datenbank gespeichert bekommen. Wenn das Element schließt möchte ich die buttonset zurücksetzen auf Standard.Programmatically Auswahl Radios in jQuery buttonset macht es

Problem ist, dass, wenn ich die buttonset stellte es das erste Mal, arbeitet ich jedes Element wählen dann bricht es nach unten und stoppt alle zusammen arbeiten.

Demo des Problems: http://jsfiddle.net/kallsbo/vSmjb/

HTML:

<div id="dumpSec"> 
    <input type="radio" name="security" id="r_public" value="public" class="rSec"> 
    <label for="r_public"><i class="icon-globe"></i> Public</label> 
    <input type="radio" name="security" id="r_private" value="private" class="rSec"> 
    <label for="r_private"><i class="icon-lock"></i> Private</label> 
    <input type="radio" name="security" id="r_link" value="link" class="rSec"> 
    <label for="r_link"><i class="icon-link"></i> Anyone with the link</label> 
</div> 
<div> 
    If you use the buttons below you can programmatically select each of the radios in the buttonset once before it all breaks down... 
</div> 
<div> 
    <button id="nbr1">Select Private</button><br/> 
    <button id="nbr2">Select Link</button><br/> 
    <button id="nbr3">Select Public</button><br/> 
</div> 

JavaScript:

// Basic function 
$("#dumpSec").buttonset(); 
$("#r_public").attr("checked", true); 
$("#dumpSec").buttonset('refresh'); 

// Put in functions on the demo buttons 
$("#nbr1") 
    .button() 
    .click(function(event) { 
    $("#r_private").attr("checked", true); 
    $("#dumpSec").buttonset('refresh'); 
    }); 

$("#nbr2") 
    .button() 
    .click(function(event) { 
    $("#r_link").attr("checked", true); 
    $("#dumpSec").buttonset('refresh'); 
    }); 

$("#nbr3") 
    .button() 
    .click(function(event) { 
    $("#r_public").attr("checked", true); 
    $("#dumpSec").buttonset('refresh'); 
    }); 

ich eine Reihe von Dingen versucht haben, wie der Versuch, die Klick-Funktion des Etiketts für jeden auslösen Radio Button und so weiter, aber ich kann nichts finden, was funktioniert. Jede Eingabe ist erwünscht!

Antwort

24

Sie müssen .prop() statt .attr() verwenden die überprüften Status

$("#r_link").prop("checked", true); 

Demo zu setzen: Fiddle

lesen: Attributes vs Properties

+0

Vielen Dank für die Lösung und den Link zur Dokumentation, warum! –

1

http://jsfiddle.net/vSmjb/2/

Sie click() auslösen können, machen es funktioniert

$("#r_private").click() 
+0

Vielen Dank für die Antwort! Das funktioniert wunderbar! Wie auch immer, Aruns Lösung scheint die beste Praxis zu sein ... –