2016-04-08 22 views
0

Auf meinem .htmlCheckbox nicht über jquery

 <div class="col-md-9 col-sm-9 col-xs-12"> 
       <div class=""> 
        <label> 
        <input type="checkbox" id="SMSCheckbox" class="js-switch" /> SMS 
        </label> 
       </div> 
       <div class=""> 
        <label> 
        <input type="checkbox" id="EmailCheckBox" class="js-switch" /> Email 
        </label> 
       </div> 
       </div> 

Auf meinem .js

$(document).ready(initialize); 

function initialize() { 
    console.log("loaded JS"); 
    $.ajax({ 
     type: "GET", 
     url: "./getNotificationSettings.php", 
     datatype: "json", 
     success: function(response) { 
      var response = JSON.parse(response); 
      var bySMS = response[0].receiveSMS; 
      var byEmail = response[0].receiveEmail; 
      if (bySMS) { 
       console.log("bySMS = true"); 
       $('#SMSCheckbox').prop('checked', true); 
      } else { 
       console.log("bySMS = false"); 
       $('#SMSCheckbox').prop('checked', false); 
      } 
      if (byEmail) { 
       console.log("byEmail = true"); 
       $('#EmailCheckBox').prop('checked', true); 
      } else { 
       console.log("byEmail = false"); 
       $('#EmailCheckBox').prop('checked', false); 
      } 
     }, 
     error: function(e) { 
      console.log(e); 
     } 
    }); 
} 

bySMS = true byEmail = true Ich habe meine Konsole überprüft zu werden, dass sie gehen nicht innerhalb der, wenn true Zweig aber irgendwie mein Checkbox nicht ist ausgewählt werden. Es ist seltsam, dass ich es auf jsfiddle getestet habe und es funktioniert.

Was könnte die Ursache für dieses seltsame Problem sein?

Nicht sicher, ob es wichtig ist, das Kontrollkästchen zu aktivieren, musste ich auf den Wortlaut klicken. Ein Klick auf den Schalter schaltet ihn nicht um.

enter image description here

+0

Bei '$ (document) .ready' –

+0

wenn dieser Code funktioniert, wenn Sie es in jsFiddle isolieren dann, dass Code ist nicht das Problem. Sie haben jedoch nicht 'bySMS' oder' byEmail' eingestellt - –

+0

Es könnte sich um ein Problem mit dem Oszilloskop handeln. Ich sehe diese Variablen nicht innerhalb der Funktion – Mihai

Antwort

0

Ich benutze .click() auf Kontrollkästchen immer, wenn die geprüfte Eigenschaft ändert sich nicht aus irgendeinem Grund nicht funktioniert, nicht sicher, ob dies eine richtige Art und Weise, es zu tun.

0

Ich habe eine kleine Funktion, die für Sie zu handhaben:

$.fn.setCheckbox = function(value) { 
    var checked = $(this).attr("checked") != "undefined" && 
    ($(this).attr("checked") === "checked" || 
     $(this).attr("checked") === true); 
    if (checked != value) { 
    $(this).click(); 
    } 
} 

Plunker: https://plnkr.co/edit/mdAzNsZnRdl2ifIT22e0?p=preview