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

Walidacja formularza w js

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
1,000 wizyt
pytanie zadane 19 grudnia 2017 w JavaScript przez ninczasek Nowicjusz (120 p.)
edycja 19 grudnia 2017 przez ninczasek
Hej

Chcialem stworzyć walidację formularza kktóry sprawdza inputy z tą samą klasą i każdemu który jest invalid przypisuje message pod inputem. Niestety nie wiem jak sie do tego zabrać. Proszę o pomoc

mój kod:

function validation() {

var form = document.querySelector("#myForm"),

 fields = form.querySelectorAll(".item");

for(var i = 0; i < fields.length; i++) {

var field = fields[i];

if(field.value == "") {

return false;

}{

return true;

}
komentarz 19 grudnia 2017 przez shotokan Nałogowiec (39,660 p.)

Zacząłbym od zapoznania się z tym (oczywiście jeden z wielu kursów), a potem samemu coś zdziałać i ewentualnie, przy kłopotach, dalej szukać pomocy na forum :)

komentarz 19 grudnia 2017 przez rafal.budzis Szeryf (85,380 p.)
komentarz 19 grudnia 2017 przez Tomek Sochacki Ekspert (227,490 p.)

pssstt HTML5 ma walidacje formularzy bez JSa ;) 

Teoretycznie tak, ale nie możemy za bardzo ingerować w wygląd tych komunikatów z przeglądarki więc nie w każdym layoucie się to sprawdzi. Brakiem JS bym się nie przejmował ponieważ przecież i tak zawsze robi się walidację serwerową, a kliencka to tylko pewna wygoda dla użytkownika.

komentarz 19 grudnia 2017 przez rafal.budzis Szeryf (85,380 p.)

@Tomek Sochacki Możemy przechwycić event i ostylować po swojemu ;)

Dodatkowo mamy kilka innych plusów.
- brak problemów z z-indeksami komunikatów
- automatyczny focus inputa
- automatyczne scrolowanie do niepoprawnego inputa
- zmiana zachowania inputów np. w polu type="url" przeglądarka podpowiada tylko adresy stron czy tez w telefonach pokazuje się klawiatura numeryczna jeśli podamy typ tel.
- komunikaty w języku przeglądarki usera. Dopisujemy jeden atrybut i mamy walidacje w wszystkich językach świata jak dla mnie jest to potęga.
- możliwość przechwycenia eventu i stworzenia własnych komunikatów.

 

komentarz 19 grudnia 2017 przez Tomek Sochacki Ekspert (227,490 p.)
Szczerze mówiąc nie korzystam za bardzo z walidacji html5 właśnie ze względu na ograniczenia w stylowaniu tych komunikatów, ale skoro już jest to rozszerzone to chętnie przyjrzę się temu bliżej :)

Komunikaty wielojęzykowe to faktycznie zaleta, niewątpliwie.

Co do tego zachowania się na inputy tel, email itp. to akurat nie ma to związku z walidacją. Na przykład dasz typ email to domyślnie mobilki dadzą przycisk małpki, ale walidacja to zupełnie oddzielny temat (de facto dla e-maili dość nieciekawa.. ale to inna sprawa).

Jak już jesteśmy przy walidacji html5 to warto też wspomnieć, że można dać zupełnie dowolne reguły z użyciem regexp, wystarczy dodać atrybut pattern i po sprawie (granice początku i końca ciągu są dodawane automatycznie). To daje potężne możliwości...

3 odpowiedzi

0 głosów
odpowiedź 19 grudnia 2017 przez Tomek Sochacki Ekspert (227,490 p.)
Ale nie podałeś co chcesz dokładnie zwalidować :) Chodzi Ci o sprawdzenie czy w inputach user podał jakiś określony ciąg znaków, liczbę, czy nie jest pusty itp.? Napisz jakie walidacje chcesz zrobić to pomożemy dobrać rozwiązanie.
komentarz 19 grudnia 2017 przez ninczasek Nowicjusz (120 p.)
Przepraszam nie wyraziłem się jasno. Mam kilka inputów z klasą item i sprawdzam czy są puste jeśli tak to pod każdym wyświetla message informującym o pustym polu.

mój kod:

function validation() {

var form = document.querySelector("#myForm"),

 fields = form.querySelectorAll(".item");

for(var i = 0; i < fields.length; i++) {

var field = fields[i];

if(field.value == "") {

return false;

}{

return true;

}
komentarz 19 grudnia 2017 przez Tomek Sochacki Ekspert (227,490 p.)

Jeśli tak, to Twój kod ma złe już same założenia, ponieważ zwracasz true/false w zależności od spełniania warunku. W tym momencie iteracja zakończy się na pierwszym inpucie, niezależnie od jego wartości i po prostu zwróci boolean.

Ty natomiast z tego co piszesz to po prostu chcesz obok pustych inputów wstawić informację o tym. Masz kilka sposobów. Możesz np. przy każdym inpucie dodać pole z informacją o błędzie (braku wartości) i początkowo je ukryć, a potem w JS odpowiednio włączać widoczność. Może to być np. na zdarzeniu sumbit formularza, input/change poszczególnych inputów itp. (nie napisałeś kiedy walidujesz i co dalej robisz z danymi).

I wtedy kolejno przelecieć wszystkie inputy np. poprzez metodę forEach() i odpowiednio je pokazywać/ukrywać w zależności od np. 

if( !field.length ) {
    //ukryj gdy pole puste
}
else {
    //pokaż gdy wypełnione
}

Staraj się też unikać operatora "==", szczególnie podczas walidacji. Lepiej stosować operator identyczności "===" albo w tym wypadku po prostu polegać na niejawnej konwersji do boolean, ponieważ pusty ciąg "" zostanie zamieniony na false.

Do tego możesz stworzyć jakąś zmienną, która w przypadku napotkania pierwszego pustego ciągu dostałaby wartość false.

Na koniec sprawdzasz czy ta zmienna jest true, i tylko wtedy wysyłasz forma na serwer, inaczej wstrzymujesz wysłanie (e.preventDefault()).

0 głosów
odpowiedź 19 grudnia 2017 przez pablop76 VIP (123,540 p.)
Jeżeli nie znasz js lub jq to się go zacznij uczyć od podstaw. A jeżeli potrzebujesz wtyczki do poprostu poszukaj jquery plugin validation form
0 głosów
odpowiedź 19 grudnia 2017 przez Artek Stary wyjadacz (11,800 p.)
Sama walidacja JS'em na nic się nie zda jeżeli nie będzie walidacji po stronie serwera

Podobne pytania

0 głosów
0 odpowiedzi 327 wizyt
pytanie zadane 8 maja 2018 w JavaScript przez XDdomino Użytkownik (680 p.)
0 głosów
1 odpowiedź 312 wizyt
pytanie zadane 17 kwietnia 2018 w JavaScript przez Catalonya1992 Mądrala (5,440 p.)
+1 głos
2 odpowiedzi 1,302 wizyt
pytanie zadane 3 listopada 2020 w JavaScript przez ptomeccc Użytkownik (800 p.)

93,185 zapytań

142,198 odpowiedzi

322,004 komentarzy

62,514 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2005p. - Łukasz Siedlecki
  7. 1964p. - CC PL
  8. 1835p. - Adrian Wieprzkowicz
  9. 1785p. - Michal Drewniak
  10. 1744p. - rafalszastok
  11. 1684p. - Mikbac
  12. 1624p. - Anonim 3619784
  13. 1520p. - Marcin Putra
  14. 1480p. - ssynowiec
  15. 1365p. - Dawid128
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...