Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] walidacja formularz i w3c
Forum PHP.pl > Forum > Po stronie przeglądarki
grzegorz_g
witam do walidacja formularza uzywam tego skryptu:


http://republika.onet.pl/2563,34,1,,fabryka.html


jednak teraz sprawdzając strone pod validatorem dostaje błąd atrybutu:


Line 110, Column 126: Attribute "rodzajpola" is not a valid attribute
…x" type="text" value="" rodzajpola="m20m100" />

jest szansa by pozostawić ten skrypt do sprawdzania poprawności fomularza i by walidacja przebiegła pomyślnie
czachor
Usunąć atrybut "rodzajpola" - specyfikacja nie przewiduje czegoś takiego. Jeśli chcesz mieć unikatowy "uchwyt" do pola, użyj id="m20m100".
grzegorz_g
tak tylko ze to nie jest unikatowe dla danego pola np. pola m20m100 (oznaczaja ze pole w formularzu musi byc z przedziału 20-100)

i teraz jak mam kilka takich pol to od walidatora dostaje komunikat:


Line 111, Column 120: ID "m20m100" already defined
czachor
To może zrób tablicę: id="rodzajpola[tu_np_iterator][m20m100]". Potem w PHP otrzymasz tablicę $rodzajpola.

Bez jakiegoś unikatowego identyfikatora (np. iterator) nie obejdzie się, ale w PHP bez problemu będziesz miał dostęp.
erix
A po co tablicę? Przecież można wykorzystać klasę.

Poza tym, można gdzieś przechowywać obiekt JS z definicjami formularzy powiązanych z identyfikatorami, np:

Kod
var items = {pole1: 'm20m100', pole2: 'm20m1000' }
grzegorz_g
funkcja validująca formularz wygląda tak, gdzie wstawić

  1. var items = {pole1: 'm20m100', pole2: 'm20m1000' }


by mozna bylo sprawdzać poprawnośc danych w formularzu i uzyskac unikatowe id

  1. testFormularza={
  2. rodzajePol:{
  3. niepuste:[/.+/,'Proszę wypełnić pole'],
  4. email:[/^[\w\.-]{2,}@[\w\.-]+\.[a-z]{2,5}$/,'Proszę podać prawidłowy adres e-mail'],
  5. liczbacalkowita:[/^\d+$/,'Prawidłową wartością tego pola jest liczba całkowita'],
  6. liczbarzeczywista:[/^(\d+|\d+,\d+)$/,'Proszę podać liczbę rzeczywistą (można użyć przecinka)'],
  7. data:[/^\d+\-\d+\-\d{4}$/,'Proszę wpisać datę w formacie DD-MM-RRRR (numer dnia-numer miesiąca-rok) np. 23-02-2003'],
  8. kodpocztowy:[/^\d{2}\-\d{3}$/,'Niepoprawny format kodu pocztowego np. 06-600'],
  9. telefon:[/\+\d{11}/,'Niepoprawny format nr telefonu np. +48666666666'],
  10. m20m100:[/^.{3,40}$/,'Proszę wpisać nie więcej niż 40 znaków, ale też nie mniej niż 3.'],
  11. m3m25:[/^.{3,25}$/,'Proszę wpisać nie więcej niż 25 znaków, ale też nie mniej niż 3.'],
  12. m5m80:[/^.{3,60}$/,'Proszę wpisać nie więcej niż 60 znaków, ale też nie mniej niż 3.'],
  13. m20m200:[/^.{3,200}$/,'Proszę wpisać nie więcej niż 200 znaków, ale też nie mniej niż 3.'],
  14. m20m4000:[/^.{20,4000}$/,'Proszę wpisać nie więcej niż 4000 znaków, ale też nie mniej niż 20.'],
  15. duzelitery:[/^[A-Z]+$/,'Proszę używać wyłącznie dużych liter w tym polu'],
  16. max:[/^[.\s]{20,4000}$/,'Max'],
  17. banner:[/^\d{4}\x\d{4}$/,'Niepoprawny format banera np. 9999x9999'],
  18. url:[/^http\:\/\/www.+\.[a-z]{2,5}$/,'Proszę podać prawidłowy adres strony www np. http://www.strona.pl']
  19. },
  20. testuj:function(f){
  21. var i,rodz;
  22.  
  23.  
  24. for(i=0;i<f.elements.length;i++){
  25. E=f.elements[i];
  26.  
  27. if(rodz=this.rodzajePol[E.getAttribute('rodzajpola')])
  28.  
  29. if(!rodz[0].test(E.value)){
  30. E.focus();
  31.  
  32. E.select();
  33.  
  34.  
  35. document.getElementById("error").style.display = "block";
  36.  
  37. document.getElementById("error").innerHTML=(E.getAttribute('komunikat')||rodz[1]);
  38.  
  39. return false;
  40. }
  41. }
  42.  
  43.  
  44.  
  45. return true;
  46. }
  47.  
  48.  
  49.  
  50. }
erix
Kod
E=f.elements[i];

Dostosuj tę linię, aby wyciągać to, co trzeba. Reszta, to praca domowa. [;
grzegorz_g
hej

a dasz odpiać ta pracę domową smile.gif kombinowałem chwile ale js to dla mnie czarna magia smile.gif
erix
To pokombinuj dwie chwile. [;

Masz podstawić wartość z tablicy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.