Ich habe ein sehr einfaches Stück von Jquery, die einen booleschen Wert von einem Ajax-Aufruf zurückgegeben und ein Kontrollkästchen zu überprüfen muss, wenn es wahr ist.
console.log("loc: " + r.location.defaultLocation);
if( r.location.defaultLocation == true ) {
$('#loc-default').attr('checked',true);
}
Dies wird in einer Onclick-Funktion ausgeführt, die ein modales Formular öffnet - wenn die zurückgegebene Ortsangabe angibt, dass dies der Standardort ist, sollte das Kontrollkästchen aktiviert werden. Wir haben 5 davon auf einer einzigen Seite - d.h. 5 Orte, die der Benutzer anklicken kann.
Ich habe das Problem, dass selbst wenn r.location.defaultLocation
false zurückgibt (laut der console.log-Zeile), wird das Kontrollkästchen immer noch aktiviert. Was mache ich falsch?
Für diejenigen unter Ihnen, die darauf bestehen, dass true/false ein String und kein Boolean sein muss:
Dies ist das Ergebnis von console.info(typeof(r.location.defaultLocation));
Und dies ist das Ergebnis von console.dir(r)
falls das hilft. ( group
ist unscharf, weil es sich um sensible Informationen handelt.)
DAS PROBLEM GEFUNDEN
Anscheinend merkt sich jquery das #loc-default
wird geprüft, nachdem die erste als geprüft markiert wurde. Ich habe der Funktion ein else hinzugefügt, und jetzt funktioniert es:
if( r.location.defaultLocation == true ) {
$('#loc-default').attr('checked',true);
}
else {
$('#loc-default').attr('checked', false);
}