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

Jak sprawdzić pozostałe warunki if pomimo true?

Object Storage Arubacloud
0 głosów
195 wizyt
pytanie zadane 6 czerwca 2016 w JavaScript przez mac-rum Użytkownik (610 p.)

Witam, mam problem.. Kombinuje i kombinuję i póki co poza narastającą frustracją niczego nie osiągnąłem. Chcę sobie stworzyć "prostą" aplikację, listę produktów. Teraz chciałbym walidować pole input. oto krótki fragment kodu,

 

Mam taką funkcję:
 

function getItemValue() {    

    var arrValues = [];

    if( itemInput.value.length < 3 ) {    
        arrValues.push("minimum 3 znaki") ;
    } else if( itemInput.value.indexOf("#") !== -1 ) {    
        arrValues.push("nie mozna uzywac znaków specjalnych");
    } else {
        arrValues.push(itemInput.value);
    }

    return arrValues;
}



W tym drugim warunku to wiadomo, ze musze pobawić się RegExpami żeby nie przyjmował żadnych specjalnych znaków, ale to póki co mało istotne. założeniem jest wrzucenie wszystkich błedów jakie sobie tam wymyślę do tablicy arrValues i potem pokazanie ich użytkownikowi. Sek w tym, że chciałbym pokazać wszystkie, które tam sobie wpiszę (tzn. jeśli użytkownik wpisze coś w stylu "##" to dostanie dwie wiadomości, "minimum 3 znaki" oraz "nie wolno uzywac znakow !@#!%% itd". Problem jest taki, że nie moge wrzucić wszystkich potrzebnych w danej chwili błedow do tablicy, gdyż jesli pierwszy if wskazuje true to dalej już to wyrażenie nie idzie.. Czyli wrzucam jednorazowo tylko 1 błąd.. Mam wrażenie, że to jest dość proste ale tak mieszam i mieszam, troche ze switchem, troche z pętlami, i w sumie jestem coraz bardziej zakręcony.

1 odpowiedź

0 głosów
odpowiedź 6 czerwca 2016 przez Avernis Nałogowiec (27,400 p.)

usuń else if, i zostaw samego if

if( itemInput.value.length < 3 ) {    
        arrValues.push("minimum 3 znaki") ;
    } if( itemInput.value.indexOf("#") !== -1 )

 

komentarz 6 czerwca 2016 przez mac-rum Użytkownik (610 p.)
Tylko wtedy jest problem inny..  Napisze to w ten sposób:

if(mniej niz 3 znaki) {

dupa

} else if( znaki specjalne) {

dupa

} else (wszystko super) { zwroc to co wpisal uzytkownik } ..

 

jesli usune else to ostatni warunek zwroci mi wszystko niezaleznie od powyzszych warunkow rowniez tresc typu "#@"
1
komentarz 6 czerwca 2016 przez Avernis Nałogowiec (27,400 p.)
chodziło mi o susnięcie else if i zastąpienie na zwykły if. To ostatnie else zostaw
komentarz 7 czerwca 2016 przez mac-rum Użytkownik (610 p.)

To dalej nie rozwiązywało mi mojego problemu, chyba, że coś robiłem źle. Natomiast poradziłem sboie w taki sposób:

 

function getItemValue() {	
	var arrValues = [];

	if( itemInput.value.length < 3 ) {	
		arrValues.push("minimum 3 znaki");
	} 

	if( itemInput.value.length > 10 ) {	
		arrValues.push("maximum 10 znaków");
	} 

	if( itemInput.value.indexOf("#") !== -1 ) {	
		arrValues.push("nie mozna uzywac znaków specjalnych");
	} 

	if( arrValues.length === 0 ) {
		arrValues.push(itemInput.value);
	}

	return arrValues;
}

 

Mam nadzieję, ze jest to zgodne z dobrymi praktykami.

Pozdrawiam :)

komentarz 7 czerwca 2016 przez Avernis Nałogowiec (27,400 p.)
właśnie o tym ci cały czas pisałem xD
komentarz 7 czerwca 2016 przez mac-rum Użytkownik (610 p.)
to coś źle zrozumiałem, bo pisałeś "zostaw ostatnie else" a tutaj żadnego else nie ma :P
komentarz 7 czerwca 2016 przez Avernis Nałogowiec (27,400 p.)
ostanie, na samym doje jest samo else, bez ifów, o twój kod mi chodziło xD

Podobne pytania

+1 głos
3 odpowiedzi 9,972 wizyt
pytanie zadane 6 stycznia 2016 w Java przez Stami Gaduła (3,790 p.)
+1 głos
1 odpowiedź 245 wizyt
pytanie zadane 27 lipca 2021 w JavaScript przez Kytrap Początkujący (390 p.)
0 głosów
0 odpowiedzi 304 wizyt

92,573 zapytań

141,423 odpowiedzi

319,648 komentarzy

61,959 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...