Wpis z mikrobloga

Koledzy z #webdev i #javascript .
Probowałem to sam rozwikłać ale nie udało się mimo długich prób.

Bootstrap Switch.
Otóż mam formularz, który służy do edycji. Pojawia się on w momencie zaznaczenia opcji "isSpecial".
Ręcznie działa bez problemu, jednak gdy ajaxem zaciągam dane do formy i ustawiam value powiązanego inputa, to gdy jest on TRUE, następuje wywołanie najpierw zdarzenia ustawienia switcha na true i od razu zaraz na false (formularz pojawia sie i zwija z powrotem). Gdzies jakiś szkopuł, ale już nie wiem.

Inicjacja:

$("[id='editIsSpecial']").bootstrapSwitch({ onText: "Tak", offText: "Nie", size: "mini", onSwitchChange:

(function (event, state) {

if (state == true) {

$('#editperiodrow').slideDown("slow");

console.log("ON");


} else if (state==false) {

$('#editperiodrow').slideUp("slow");

console.log("OFF");

}

})

});


Ustawianie wartości input'a.

if(this.name=='isSpecial'&&data["isSpecial"]==1) {

this.checked = true;

$('input[id="editIsSpecial"]').bootstrapSwitch('state', true)

}

else {

this.checked = false;

$('input[id="editIsSpecial"]').bootstrapSwitch('state', false)

}
  • 9
@motokate: no wlasnie leci, ale czemu?

@MrGreeneye: @koob: Tak wygląda cała funkcja wczytywania danych. Ogólnie wypełnia elegancko cały formularz danymi zaciągniętymi z AJAX'a. Sypie się coś z switch'em.

Nie mogę dojść do tego dlaczego wywołuje dwukrotnie zmianę stanu. Przy FALSE nie ma problemu, nic się nie dzieje bo i nie powinno. Przy TRUE - ewidentnie wykonuje obydwie częsci if'a co jest nielogiczne dla mnie, a i oczywiście nie ustawia
@trustME: bo używasz each na każdym inpucie, a później w środku ifa i elsa masz ('input[id="editIsSpecial"]')

Czyli jak masz np. dwa inputy to pętla wykona się 2 razy i pierwszy raz zmieni się state na true a za drugim wykonaniem na false.

Użyj kombinacji this, parents, find