Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Walidacja formularza PHP, uniwersalny skrypt
jurcio6
post
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 4.11.2010

Ostrzeżenie: (0%)
-----


Witam.

Mam problem - nie mogę poradzić sobie z walidacją formularza pod kątem wypełnienia pól. Nie chodzi tu jednak o zwykłe sprawdzenie poszczególnych pól. Cały pic polega na tym, że chciałbym wykorzystać tą jedną funkcję do co najmniej 5 różnych formularzy - stąd mowa o uniwersalności. Widziałem już wiele funkcji, które sprawdzają poszczególne pola (po nazwie), ale to mnie nie urządza, ponieważ w formularzach liczba i nazwy pól generowane są dynamicznie w PHP i wahają się od kilku do 100 pól - pisanie z palca skryptu sprawdzającego każde pole po nazwie jest raczej bez sensu. Aczkolwiek nie jest tak, że każde pole jest inne - wszystko leci wg wzoru, czyli np. mam 10 pól i ich nazwy: pole_1, pole_2 itd.

Czy zna ktoś może jakiś skrypt, który sprawdza, czy zostały wypełnione wszystkie pola w danym formularzu niezależnie od ich nazwy czy ilości? Ograniczę się do pól tekstowych. Optymalnie by było, żeby np. podświetlał puste pola w formularzu na czerwono.

Walidacja ma działać "onsubmit" - jak coś jest źle, to nie wysyła, jak ok - wysyła.

Ten post edytował jurcio6 29.01.2011, 15:02:47
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jurcio6
post
Post #2





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 4.11.2010

Ostrzeżenie: (0%)
-----


Zapewne tak, ale wtedy jest jeszcze druga po stronie serwera (realizowana przez PHP), która nie przepuści pustych pól albo innych "cudaków". W moim przypadku ta walidacja w JS ma być bardziej pomocą dla użytkownika, niż zabezpieczeniem - chodzi zwyczajnie o to, żeby ktoś przypadkiem nie pominął któregoś z pól.

Udało mi się dorobić drugą część dla textarea, ale nie jest to zbyt eleganckie i optymalne... niestety próbując złożyć to w jedną pętlę nie działa. Nie znam na tyle JS. Czy byłby w stanie ktoś pomóc?

  1. <script type="text/javascript" language="JavaScript">
  2. var ClassName = "val"; //nazwa klasy elementów, które mają być poddane walidacji
  3. var FocusColor = "#FFCC00"; //kolor podświetlenia niewypełnionego pola
  4.  
  5. function checkForm(theForm) {
  6. var error = false;
  7. var inputfields = document.getElementsByTagName("input");
  8. var textareas = document.getElementsByTagName("textarea");
  9.  
  10. for(var x = 0 ; x < inputfields.length ; x++ ) {
  11. if(inputfields[x].getAttribute("class") == ClassName) {
  12. if (inputfields[x].value.length == 0) {
  13. inputfields[x].style.background = FocusColor;
  14. error = true;
  15. } else {
  16. inputfields[x].style.background = 'White';
  17. }
  18. }
  19. }
  20.  
  21. for(var x = 0 ; x < textareas.length ; x++ ) {
  22. if(textareas[x].getAttribute("class") == ClassName) {
  23. if (textareas[x].value.length == 0) {
  24. textareas[x].style.background = FocusColor;
  25. error = true;
  26. } else {
  27. textareas[x].style.background = 'White';
  28. }
  29. }
  30. }
  31.  
  32. if(error == true) {
  33. alert("Wypełnij wszystkie pola!");
  34. return false;
  35. }
  36. }


Ten post edytował jurcio6 2.02.2011, 12:07:49
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 20:38