• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed [JAVASCRIPT] Problem z wyświetleniem wartości która nie jest liczbą

VPS Starter Arubacloud
+1 głos
441 wizyt
pytanie zadane 15 kwietnia 2015 w JavaScript przez marcin_w Gaduła (3,190 p.)
zamknięte 15 kwietnia 2015 przez marcin_w

Witam wszystkich serdecznie. Mam problem z zadaniem 2 (2 odcinek kursu JavaScript). Próbuję kombinować ale nie mam pojęcia co zrobić aby spełniły się następujące scenariusze:

  • Wartość w lewym polu nie jest liczbą
  • Wartość w prawym polu nie jest liczbą
  • Wartości w obu polach nie są liczbami

Dołączam kod źródłowy :

<!DOCTYPE html>
<html lang="pl">
<head>

<meta charset="utf-8">

<script type="text/javascript">

     function wypisz()
	  {
	      var liczba1 = document.getElementById("pole1").value;
		  var liczba2 = document.getElementById("pole2").value;
		  var napis = " ";
		  
		if (liczba1<liczba2) 
		{
		   for(i=liczba1; i<=liczba2; i++)
		   {
		      napis = napis + i+", " ;
		   }
	        
			document.getElementById("wynik").innerHTML= napis;
	    }	
		
		
		 else if (liczba1>liczba2)
          {
		     for(i=liczba1; i>=liczba2; i--)
		      {
		         napis = napis + i+", " ;
		      }
	        
			document.getElementById("wynik").innerHTML= napis;
	      }	
		   
		   else if ((liczba1==" ")  &&  (liczba2==liczba2))
		   {
		      document.getElementById("wynik").innerHTML= "Wartość w lewym polu nie jest liczbą !";
		   }
		   
		   else if ((liczba1==liczba1)  &&  (liczba2==" "))
		   {
		      document.getElementById("wynik").innerHTML= "Wartość w prawym polu nie jest liczbą !";
		   }
		   
		   else if (liczba1==liczba2) 
		   {
		     document.getElementById("wynik").innerHTML= "Liczby mają tę samą wartość ";
		   }  		 
			   
		   	
	   }


</script>
</head>
<body>

     <input type="text" id="pole1">
	 <input type="text" id="pole2">
	 
	 <input type="submit" value="Pokaż" onclick="wypisz()">
	 
	 <div id="wynik"> </div>


</body>
</html>

W warunkach "else if" próbowałem różnych kombinacji, ale niestety nie działa. Prosiłbym was abyście nie dawali mi od razu w 100% gotowego rozwiązania ale, dajcie jakieś wskazówki, polecenia które mógłbym wykorzystać do rozwiązania tego problemu z góry dzieki za odpowiedzi ;).

 

P.S Jestem na forum od 5 kwietnia w związku z tym gratuluję wspaniałego forum Panu Mirkowi (lubię to). Mam nadzieję że będzie się dynamicznie rozwijać ;). 

 

komentarz zamknięcia: Problem został rozwiązany.

2 odpowiedzi

+1 głos
odpowiedź 15 kwietnia 2015 przez nefil1m Stary wyjadacz (10,690 p.)

Skorzystaj z typeof.

var pole1 = document.getElementById('pole1').value;

if( typeof pole1 !== number ) {
// tu komunikat czy coś
}

Input musi mieć wtedy type="number" bo inaczej zawsze dostaniesz stringa.
Możesz też testować wartość regexem ale to trochę bardziej złożone (niewiele ale jednak;)).

komentarz 15 kwietnia 2015 przez marcin_w Gaduła (3,190 p.)

Więc zmodyfikowałem swój kod tak : 

  var pole1 = document.getElementById("pole1").value;    
                                                                                                                                                                                   var pole2 = document.getElementById("pole2").value;

else if (typeof pole1 != number )
		   {
		      document.getElementById("wynik").innerHTML= "Wartość w lewym polu nie jest liczbą !";
		   }
		   
		   else if (typeof pole2 != number )
		   {
		      document.getElementById("wynik").innerHTML= "Wartość w prawym polu nie jest liczbą !";
		   }

     <input type="number" id="pole1">
     <input type="number" id="pole2">

 

I nadal jest źle, do moich okienek tekstowych dodały się strzałki dzięki którym moge zwiększać/zmniejszać wartości. Kiedy wpisuję literę do lewego lub prawego okienka to w lewym nie wyświetla się nic a w prawym zamiast litery pojawia się 0. Nie mam pojęcia jak to zrobić ;/

komentarz 15 kwietnia 2015 przez nefil1m Stary wyjadacz (10,690 p.)
Mój błąd tym razem. type="number" też zwraca stringa (czego nie wiedziałem wcześniej)

Rozwiązanie z regexpem:
http://jsfiddle.net/jLwh73q8/1/

Jak to działa nie będę dokładnie tłumaczył, polecam przerobić jakiś tutorial z tego.
komentarz 15 kwietnia 2015 przez marcin_w Gaduła (3,190 p.)
Już działa musiałem odpowiednio w warunkach dopisać funkcję isNaN, która sprawdza czy zmienna NIE jest liczbą. Pomógł mi komentarz pod filmem gdzie był napisany kod, który nie spełniał wszystich wymogów co do treści zadania. Jednak była tam funkcja isNaN, która była cenną wskazówką. ;)
komentarz 15 kwietnia 2015 przez nefil1m Stary wyjadacz (10,690 p.)
O tym nie pomyślałem ;)
0 głosów
odpowiedź 15 kwietnia 2015 przez testerius Pasjonat (23,960 p.)

Najprostsze rozwiązanie, aczkolwiek w całości nie zniweluje błędnego wpisu usera to zmiana typu z text na number,

<input type="number" id="pole1">
<input type="number" id="pole1">

Po wpisaniu tekstu pojawi się oczywiście czerwone obramowanie inputa, informujące że wartość jest niezgodna. Jeśli chcesz to jakoś inaczej rozwiązać to musisz poczytać o walidacji.

Tylko tak mogę na tę chwilę pomóc, sam mam bardzo małą wiedzą o JS, dopiero co będę się uczył.

Podobne pytania

+2 głosów
3 odpowiedzi 6,612 wizyt
+10 głosów
14 odpowiedzi 2,524 wizyt

92,460 zapytań

141,265 odpowiedzi

319,104 komentarzy

61,856 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...