Odwołanie się do span'a w formularzu

0

Próbuję swoich sił w JS i napotkał mnie jeden problem. Chcę wyświetlać obok input'a czy pole zostało uzupełnione poprawnie czy też nie. Niestety informacja zamiast wyświetlać się obok formularza, usuwa formularz i zostaje sama informacja. Co robię źle?

<script type="text/javascript">
function imie()
{
	var nazwa = document.forms['formularz'].login.value;

	if ( nazwa == '' )
	{
		document.forms['formularz'].tester.value = document.write("Pole uzupelnione niepoprawnie!");
	}
	else
	{
		document.forms['formularz'].tester.value = document.write("Pole uzupelnione poprawnie!");
	}
	return false;
	
}
</script>

<form action="#" method="post" name="formularz" id="formularz">
<input type="post" onblur="imie()" name="login"> <span id="tester" name="tester">tester</span><br>
<input type="submit" name="dalej" value="pokaz">
</form>
0

sądzę, że powinieneś użyć innerHTML, nie value w przypadku SPAN

0

Niestety, nadal nie działa jak powinno :/

0

co to za potworek? - document.forms['formularz'].tester.value = document.write("Pole uzupelnione poprawnie!"); poczytaj w dokumentacji jak działa i co zwraca document.write().

span nie ma czegoś takiego, jak value. zrób document.getElementById("tester").innerHTML = "cośtam cośtam";. a na przyszłość naucz się korzystać z dokumentacji oraz konsoli przeglądarki lub debugera js.

0

@lolek22:
Nie używaj zapisu typu document.forms['formularz'].tester.. W przypadku pól formularza jest on raczej słabawy, a w przypadku spana, który polem formularza nie jest (!), jest całkowicie błędny. I to rzuca Ci wyjątkiem. Zwykłe spany nie są rejestrowane w document.forms i document.forms['formularz'].tester zwraca Ci undefined, czyli takiego jakby nulla. Jak na tym "nullu" próbujesz ustawić jakieś value, to skrypt Ci się wysypuje. Zresztą, własność value też mają tylko pola formularza, a nie spany. Dodatkowo, document.write() jest tu źle użyte. Najprostsza rada: NIGDY nie używaj document.write(), to niewydajna i niepotrzebna (na Twoim etapie i jeszcze bardzo długo potem) funkcja.

Tyle jeśli chodzi o przyczyny błędu. Co do prawidłowego rozwiązania, to @ŁF już je podał.

0

Myślę, że przesiadka na jQuery znacząco uprościła by Twój kod i zmniejszyła ilość problemów.

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