2014-08-31 18 views
9

http://jsfiddle.net/rphpbqp9/Come controllare programatically un pulsante gruppo di pulsanti di Bootstrap (radio)

<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'); 

Ho letto più risposte di domanda, ma nessuno di loro opere. Il pulsante di commutazione non funziona, ho provato ad aggiungere/rimuovere la classe "attiva", non ha alcun effetto. Sto usando 1.10 jQuery e 3.1 Bootstrap. Questo dovrebbe essere semplice, mi sto tirando i capelli!

risposta

20

button() deve essere chiamata sull'elemento con la classe btn ...

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

Questo commuta i pulsanti correttamente e aggiornare le proprietà di ciascun ingresso controllato correttamente ...

Fiddle

+0

Sei signore bene! Dovrei forse mettere l'id sull'etichetta, quindi non devo chiamare "più vicino"? –

+0

Vorrei aver fatto questa domanda prima, avrei avuto più capelli ormai. –

+0

Ho appena provato, funziona se sposto gli ID di livello superiore, quindi non devo usare il più vicino http://jsfiddle.net/6h3c5axn/1/, un'altra cosa: le chiamate controllate non funzionano poi. Puoi scavare verso il basso per il bambino per arrivare al campo di input. –

2

È assurdo che i documenti di bootstrap (3.2) non lo rendano più ovvio, ma ecco il metodo più semplice che ho trovato per impostare lo stato iniziale dei pulsanti di opzione nel codice.

<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'); 
} 

Dopo aver letto decine di messaggi su questo argomento, sembra che questi sono i punti generali di confusione:

  • Procedimento 'ginocchiera' non commuta tra stati (off> on -> spento) come ci si potrebbe aspettare, ma piuttosto basta impostare il pulsante di riferimento su "on" e spegne tutti gli altri pulsanti "off".
  • L'ID di riferimento deve trovarsi sull'etichetta e non sull'input.
+0

L'ID è sull'etichetta? Come è strano? –

Problemi correlati