2017-06-16 2 views
1

Ich benutze Bootstrap-Schalter. Aber wenn Bedingung in Schalter nicht funktioniert.Wenn Bedingung nicht in Bootstrap-Schalter

setTimeout(function(){ 
      $('#oconnect').on('switchChange.bootstrapSwitch', function (event, state) { 
        var state1 = $('#oconnect').bootstrapSwitch('state'); 
        alert(state1); 
        if(state1 === "true") 
        { 
         alert(1); 
         $('.user_spec_div').css('display','block');  
        } 
        else 
        { 
         alert(2); 
         $('.user_spec_div').css('display','none');  
        } 
      }); 
     }, 500); 

bekam ich den geänderten Wert von state1. Es gibt true und false zurück.

Aber wenn ich durch if(state1 === "true") oder if(state1 == "true") überprüfe, funktioniert es nicht. Es geht immer in einen anderen Zustand.

+1

Es ist wahrscheinlicher, dass 'state' ein boolean ist, so verwenden' if (state1) {... ' –

+0

oh danken Ihnen für die schnelle Antwort. Ich bin total vergessen über Boolean es funktioniert :) – Bhavin

+0

Froh, zu helfen. Ich habe es als Antwort für Sie hinzugefügt –

Antwort

2

Gemäß der documentation ist state ein boolescher Wert. Das Problem wird daher von Ihren Versuchen verursacht, es mit einer Zeichenfolge zu vergleichen.

Statt Ihre if Anweisung dies ändern:

if (state1) { 
    // your code here... 
} 

In der Tat können Sie den Code noch prägnanter machen, indem Sie den boolean state Wert zu geben, die direkt an den Ereignishandler übergeben wird, auf die toggle() Verfahren, wie folgt aus:

setTimeout(function(){ 
    $('#oconnect').on('switchChange.bootstrapSwitch', function(e, state) { 
    $('.user_spec_div').toggle(state); 
    }); 
}, 500); 
+0

Vielen Dank für die schnelle Antwort. Es funktioniert perfekt. :) – Bhavin

+0

Kein Problem. Ich habe gerade die Antwort aktualisiert, um Ihnen eine viel einfachere Implementierung der Logik zu geben. –

+0

Oh ja. Nette Lösung. Nochmals vielen Dank :) – Bhavin