2014-08-31 14 views
9

http://jsfiddle.net/rphpbqp9/Wie programmatisch

<div class="btn-group" data-toggle="buttons"> 
    <label class="btn btn-sm btn-primary success active"> 
     <input type="radio" name="options" id="optionFalse" checked />false 
    </label> 
    <label class="btn btn-sm btn-primary danger"> 
     <input type="radio" name="options" id="optionTrue" />true 
    </label> 
</div> 

$('#optionTrue').button('toggle'); 

ich gelesen habe mehr Fragen Antworten eine Bootstrap-Taste Gruppe (Radio), um zu überprüfen, aber keiner von ihnen arbeitet. Die Schaltfläche toggle funktioniert nicht, ich habe versucht, "aktive" Klasse hinzufügen/entfernen, hat keinen Effekt. Ich benutze 1.10 jQuery und 3.1 Bootstrap. Das soll einfach sein, ich ziehe mir die Haare aus!

Antwort

20

button()btn auf das Element mit der Klasse aufgerufen werden muss ...

$('#optionTrue').closest('.btn').button('toggle'); 

Diese die Tasten richtig und aktualisiert die überprüften Eigenschaften jeder Eingabe richtig ...

Fiddle

schalten wird
+0

Sie haben Recht, Herr! Soll ich dann die ID auf das Label setzen, also muss ich nicht "am nächsten" anrufen? –

+0

Ich wünschte, ich hätte diese Frage früher gestellt, ich hätte jetzt mehr Haare übrig. –

+0

Ich habe es gerade versucht, es funktioniert, wenn ich die IDs eine Ebene höher, dann muss ich nicht am nächsten zu verwenden http://jsfiddle.net/6h3c5axn/1/, noch eine Sache: das ist überprüft Anrufe funktionieren nicht dann. Sie können jedoch nach dem Kind graben, um zum Eingabefeld zu gelangen. –

2

Es ist verrückt die bootstrap docs (3.2) machen dies nicht offensichtlicher, aber hier ist die einfachste Methode, die ich gefunden habe, um den Ausgangszustand von Radio-Buttons in Code zu setzen.

<div class="btn-group" data-toggle="buttons"> 
    <label id="optionFalse" class="btn btn-primary"> 
     <input type="radio" name="options" /> false 
    </label> 
    <label id="optionTrue" class="btn btn-primary "> 
     <input type="radio" name="options" /> true 
    </label> 
</div> 

if (initTrue) { 
    $('#optionTrue').button('toggle'); 
} 
else { 
    $('#optionFalse').button('toggle'); 
} 

Nach Dutzenden von Beiträgen zu diesem Thema zu lesen, scheint es diese die allgemeinen Punkte der Verwirrung sind:

  • Die ‚Toggle‘ Methode nicht zwischen Staaten nicht hin- und herzuschalten (off-> auf -> off), wie man es erwarten könnte, sondern setzt den referenzierten Button einfach auf "on" und schaltet alle anderen Buttons aus.
  • Die ID, auf die verwiesen wird, muss auf der 'Bezeichnung' und nicht auf der 'Eingabe' stehen.
+0

Die ID ist auf dem Etikett? Wie verrückt ist das? –