Walidacja długości tekstu JavaScript

0

Mam taki kod:

if ((!f.nick.value) <4 || (f.nick.value.length < 25)) {
		bledy += 'Nick nie może być krótszy niż 4 znaki i dłuższy niż 25 znaków!\n';
	}

dlaczego nie działa? Nie pobiera długości wpisanego tekstu do formularza. Jak użyć poprawnie funkcji length?

0

(!f.nick.value) <4 możesz wytłumaczyć, co to Twoim zdaniem miałoby robić?
PS length to nie funkcja, tylko właściwość.

0

Sprawdzić czy wpisany tekst jest mniejszy od 4. Nie wiem czy to jest dobry kod, znalazłem go w internecie.

0

Czy ascdf jest mniejsze od czterech? A może as jest mniejsze od czterech?
Jaki jest w ogóle wyznacznik porównywania tekstu z liczbą? Jak się to robi?

Edit: no i co to w ogóle robi tam !?

0

To czego mam użyć i jak ma wyglądać kod? Oświecisz mnie?

0

A jak sprawdziłbyś, czy jakaś liczba x zawiera się w zakresie 4..25?

0

Użyłbym jakiejś funkcji, której teraz nie znam. Nie drocz się ze mną proszę.

0

Nie - powiedz, jak byś to zrobił matematycznie.

0

Nie jestem dobry z matematyki, nienawidzę jej szczerze mówiąc. Dla mnie to jest abstrakcja, ale wydaje mi się, że będzie się zawierać gdy x<4<25. Nie wiem nie znam się. No jak będzie pomiędzy 4.....x....25 to się zawiera to chyba logiczne, ale jak to przedstawić matematycznie to ja nie wiem.

0

x musi być jednocześnie większe lub równe 4 oraz mniejsze lub równe 25, tak na logikę, c'nie? Wiele matematyki tutaj nie było.
Tak czy siak - podstaw za x długość ciągu f.nick.value i voilà.
To już chyba dasz radę zapisać w JS.

nienawidzę jej szczerze mówiąc

Możesz mieć 'drobny' problem próbując pisać na własną rękę coś, do czego nie ma pierdyliarda poradników...

0

Gdy dodam tak:

if ((f.nick.value) >=4 || f.nick.value.length <= 25) {
        bledy += 'Nick nie może być krótszy niż 4 znaki i dłuższy niż 25 znaków!\n';
    }

to cała funkcja ze sprawdzaniem formularza się nie wykonuje. Co jest źle?

0

1.(f.nick.value) >=4 co to ma być?
2.oraz mniejsze lub równe

0

To jak ma to wyglądać? Bo nie rozumiem co masz na myśli.

0

Przestań kopiować swój błędny kod i zajrzyj do poradnika.
f.nick.value >= 4
f.nick.value.length <= 25
Pomijając inne operatory, widzisz między tymi dwoma pewną różnicę?

0

f.nick.value >= 4

powinno być f.nick.value.length >= 4 ?
Jeśli tak to mówię, że pomimo tego nie działa tzn. komunikat się wyświetla ale nawet jak wpiszę "a" lub "aaaaaaaA"

0

No tak, a wziąłeś pod uwagę, że oraz (to co powinno być) to nie jest lub (|| - to co masz)?

0

A jak jest "oraz"?

|| - lub
&& - i
! - negacja

ale "oraz"?

1

Myślisz zbyt schematycznie.
A czego synonimem jest słowo oraz?

0

1 a
2 dodatkowo
3 i
4 natomiast
5 plus
6 również
7 także
8 tudzież
9 zaś

Sprawdziłem wszystkie operatory i żaden nie działa poprawnie.

0

Wrzuć kod z operatorem &&.

0

No przecież taki głupi nie jestem. Napisałem:

Sprawdziłem wszystkie operatory i żaden nie działa poprawnie.

Również &&. Z tym operatorem nie pojawia się żaden komunikat.

0

A ja napisałem: wrzuć kod z operatorem &&.
I pomyślimy dalej.

0

Może ja pokażę całość funkcji:

function sprawdz_formularz()
{
    var bledy = '';
    var f = document.forms['formularz'];
    if (f.nick.value == '')
        bledy += 'Musisz wpisać Nick!\n';
		//document.write("<div class=\"error\">Musisz wpisać nick!</div>");
	if ((!f.nick.value.length) >= 4 && (f.nick.value.length <= 25)) 
		bledy += 'Nick nie może być krótszy niż 4 znaki i dłuższy niż 25 znaków!\n';
    if (f.haslo.value == '')
        bledy += 'Musisz wpisać Hasło!\n';
    if (bledy == '')
        return true;
    else
    {
		alert (bledy);
        return false;
    }
}
0

No dobra, a ta negacja przy (!f.nick.value.length) >= 4 to po co tutaj? :|

0

Nie wiem po co. Tak znalazłem w internecie(już nie pamiętam gdzie, bo tyle stron przejrzałem)

Ustawiłem tak:

if ((f.nick.value.length) < 4 && (f.nick.value.length < 25)) 

i sprawdzanie kodu do 4 znaków działa. Ale gdy jest ponad 25 znaków to już nie. Wiem,że przy 25 jest odwrotnie znak. Ale gdy dam > lub >= to nie działa w ogóle warunek.

0

Żartujesz sobie, prawda?
Zapytałem po co Ci negacja liczby przy pierwszym f.nick.value.length, a Ty odwróciłeś operatory i w ogóle zrobiłeś coś, czego nie potrafię pojąć...
Przeczytaj ponownie posta, w którym tłumaczę, kiedy liczba zawiera się w przedziale...

0

Ja też tego nie potrafię pojąć. Zrobiłem to inaczej. "Rozwaliłem" ten warunek na dwa osobne.

if ((f.nick.value.length) < 4	)
	bledy += 'Nick nie może być krótszy niż 4 znaki!\n';
if ((f.nick.value.length) > 25	)
	bledy += 'Nick nie może być dłuższy niż 25 znaków!\n';

Tak jest lepiej i przynajmniej działa jak należy. Ale i tak dzięki za pomoc. Wiem, że jestem oporny :)

0

Nie wiem czy mogę się jeszcze dołączyć do tego tematu ale nie wiem jak jest z walidacją danych ze zmiennych PHP. Mam tak:

if ( !filter_var($email, FILTER_VALIDATE_EMAIL) ) {
		echo '<div class="error">E-mail nie jest prawidłowy!</div>';
		return $email;
     }

W PHP kod normalnie działa. Natomiast jak przeprowadzić walidację w JavaScript? Można w JS używać zmiennych z PHP?

0

Można w JS używać zmiennych z PHP?

Możesz je przekazać do skryptu:

echo "<script>var foo = $foo;</script>";
0

Zatem:

if ( !filter_var($email, FILTER_VALIDATE_EMAIL) ) {
		echo "<script>var email = $email;</script>";
		echo '<div class="error">E-mail nie jest prawidłowy!</div>';
		return $email;
     }

Ale jak wykorzystać to w JS?

Próbowałem w ten sposób ale to chyba nie tak:

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) 
		bledy += 'E-mail nie jest prawidłowy!\n';

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