onChange podwojne wywolanie

0

Czesc
Mam taki HTML:

<label class="col-lg-2"><input type="checkbox"  class="switchery-primary" id="mono" class="switchery-primary" onchange="changeFunction(this.value, this.id)" value="mono" > Mono </label>

i taki kod javascript:

function changeFunction(val, id) {
        		
             	alert(document.getElementById("fieldsetMono").style.display);

             	if (document.getElementById("fieldsetMono").style.display == "none")
             	{
            		document.getElementById("fieldsetMono").style.display = "block";
            	}
            	else
            	{
            		document.getElementById("fieldsetMono").style.display = "none";
            	}	
             
        }

W stylu mam ustawione:

		#fieldsetMono{ display: none; }

I teraz co pokazuje mi alert:
Pierwsza zmiana:
1/ NIC
2/ none
Druga zmiana
1/ block
2/ none

Ogólnie widziałem sporo wątków w odpowiedzi na "why onchange fuction calls twice" ale nigdzie nie znalazłem jakiejś sensownej odpowiedzi.
Rzeczywiście tak jest. Mało tego - generalnie nie rozumiem dlaczego przy drugiej zmianie wyjściową wartością jest none, skoro w pierwszej jest poprawnie.

O co chodzi? Z góry dziękuję za wskazówki :)

0

Myślę że w pierwszej kolejności upewnij się, czy zmiana stylu na tym elemencie nie triggeruje właśnie kolejnego zdarzenia onchange - alerty które wypisałeś na to wskazują.
Zastanawiam się też czy na pewno używasz dobrego zdarzenia - czy np. onchange nie jest tylko dla inputa, selecta, i textarea?

W jaki sposób zmieniasz tekst tego labela? Może w tym samym miejscu lepiej zmieniać także jego styl?

0

Dokładnie tak. Okazuje się, że zmiana właściwości też wywołuje onchange. Zmiana na onclick rozwiazala problem.

Dzieki za pomoc!
Michal

1 użytkowników online, w tym zalogowanych: 0, gości: 1