2013-09-30 11 views
35

Wenn # 1 funktioniert, im Fall # 2 funktioniert es nicht. Überprüfen Sie den Code unten:bootstrap radio button "checked" flag

<div class="container"> 
    <div class="row"> 
     <h1>Radio Group #1</h1> 
     <label class="radio-inline"> 
      <input name="radioGroup" id="radio1" value="option1" type="radio"> 1 
     </label> 
     <label class="radio-inline"> 
      <input name="radioGroup" id="radio2" value="option2" checked="checked" type="radio"> 2 
     </label> 
     <label class="radio-inline"> 
      <input name="radioGroup" id="radio3" value="option3" type="radio"> 3 
     </label> 
    </div> 
    <div class="row"> 
     <h1>Radio Group #2</h1> 
     <label for="year" class="control-label input-group">Year</label> 
     <div class="btn-group" data-toggle="buttons"> 
      <label class="btn btn-default"> 
       <input name="year" value="2011" type="radio">2011 
      </label> 
      <label class="btn btn-default"> 
       <input name="year" value="2012" type="radio">2012 
      </label> 
      <label class="btn btn-default"> 
       <input name="year" value="2013" checked="checked" type="radio">2013 
      </label> 
     </div> 
    </div> 
</div> 

Sie es hier in Aktion sehen können: http://bootply.com/84165

+1

Was funktioniert nicht? – Trevor

Antwort

69

Vorausgesetzt, dass Sie eine Standard-Schaltfläche aktiviert werden soll.

<div class="row"> 
    <h1>Radio Group #2</h1> 
    <label for="year" class="control-label input-group">Year</label> 
    <div class="btn-group" data-toggle="buttons"> 
     <label class="btn btn-default"> 
      <input type="radio" name="year" value="2011">2011 
     </label> 
     <label class="btn btn-default"> 
      <input type="radio" name="year" value="2012">2012 
     </label> 
     <label class="btn btn-default active"> 
      <input type="radio" name="year" value="2013" checked="">2013 
     </label> 
    </div> 
    </div> 

Fügen Sie die active Klasse auf die Schaltfläche (label-Tag) Sie notleidenden und checked="" seinen input Tag wollen, so dass es in der Form von Standard vorgelegt wird.

+0

Danke @Trevor. Der Button ist jetzt markiert, aber wenn ich das Formular abschicke, versteht es das nicht als überprüft. Wenn ich manuell in die anderen Optionen klicke, ohne das 'aktiv', kann der submit den Wert verstehen. Mit 2013 aktiv, wenn ich beispielsweise in 2011 klicke und 2013 erneut klicke und das Formular absende funktioniert es. Hast du irgendwelche Idea? Danke noch einmal. – Khrys

+1

Sieht so aus: http://StackOverflow.com/Questions/11462434/twitter-bootstrap-radio-buttons-not-working – Khrys

+0

Oh in diesem Fall versuchen, die 'checked =" "' auf das Eingabeelement als auch. Ich werde meine Antwort aktualisieren. – Trevor

14

A Javascript fix die 'aktive' Klasse für alle Labels, die Eltern der überprüften Eingaben gelten:

$(':input:checked').parent('.btn').addClass('active'); 

Einsatz direkt nach

$('.btn').button(); 
+0

Wenn Sie Probleme mit den Schaltflächen haben, die nach dem Klicken auf "Zurück" nicht hervorgehoben werden, behebt dieser JavaScript-Ausschnitt das Problem. Danke, @rawrkats. –

+1

Ich mag diese Lösung am besten, aber ich habe '$ (". Btn-group "). Find (': input: checked'). Parent ('. Btn'). AddClass ('active');' so dass Auf Seiten, auf denen diese nicht vorhanden sind, wird die Anzeige schneller ausgeführt. –

1

Verwenden aktiv Klasse mit Label um es automatisch auszuwählen und checked="" zu verwenden.

<label class="btn btn-primary active" value="regular" style="width:47%"> 
    <input type="radio" name="service" checked="" > Regular </label> 
    <label class="btn btn-primary " value="express" style="width:46%"> 
    <input type="radio" name="service"> Express </label> 
1

Sie müssen aktiv in das Etikett verwenden, damit es wie oben erwähnt funktioniert. Aber Sie können checked = "checked" verwenden und es wird auch funktionieren. Es ist nicht notwendig, aber es ist lesbarer und macht mehr Sinn, da es mehr HTML-Format-Compliance ist.