eRIZ's weblog

PHP, webdesign, Linux, Windows i inne, bo nie samym chlebem człowiek żyje

Walidator formularzy i jQuery

Prace nad Vexerianem cały czas trwają. Kilka kamieni milowych osiągniętych, parę kwestii wyjaśnionych, działa OK.

Kolejną „milówką” jest klasa obsługi formularzy. Wychodząc z założenia „pomęczę się wcześniej, później będzie luźniej” postanowiłem napisać sobie kompleksową klasę obsługi formularzy. Pomysł wpadł mi do głowy po drodze, tylko nie pamiętam już do czego. :) Wracając – założyłem sobie obsługę kilku pól:

  • text – IMHO mówi samo za siebie
  • longtext – wypociny do textarea
  • integer – dane liczbowe
  • select – lista wyboru
  • radio – radioboxy
  • checkbox:D
  • file – plik
  • date – generuje trzy selecty na wybór daty
  • email – adres e-mail
  • password – hasło+pole na potwierdzenie
  • IP – adres IP

Oczywiście po stronie gościa jest sprawdzanie, bo nie ma nic gorszego niż wklepanie wszystkiego, kliknięcie „Wyślij”, a tu potem klops – jedno pole niewypełnione i jeszcze nie wiadomo które to było.

Początkowo męczyłem się z przekazywaniem informacji dotyczących pól do skryptów po stronie użytkownika. (X)HTML nie ma przecież pola typu IP czy date. Oczywiście jest JSON, ale przy jego wykorzystaniu spada „przenośność” – definicja każdego formularza musi zostać przesłana osobno. Przyszedł mi do głowy za to inny pomysł. Mianowicie, przekazywanie danych poprzez klasy (class w atrybutach znacznika). Okazało się, że idea sprawdza się znakomicie. Do tego odpowiednie ubranie formularzy i gra gitara ;)

Co do samego sprawdzania poprawności: Wcześniej męczyłem się z przeskakiwaniem przez document.forms i document.getElementById. Głupiego robota, nie? Przypomniałem sobie jednak, że jest coś takiego jak jQuery. Dlaczego jQuery? Ze względu na architekturę, z którą po prostu aż chce się pisać aplikacje (tak, z pomocą tego frameworka już można śmiało pisać aplikacje, a nie tylko zwykłe skrypty). Jest jeszcze Prototype, ale brakuje mi w nim kilku funkcji, a jQuery jest lekki, ma wszystko, czego potrzeba, a nawet jeszcze więcej. W JS brakowało mi np. PHP-owskiego odpowiednika foreach. Dużo mniej trzeba się dzięki temu naklepać. ;) Wyliczać można długo, ale jeszcze z takich „nowinek” muszę wspomnieć choćby o łatwiejszym dostępie do warstw, ustawianiu zdarzeń i rozszerzalności za pomocą wtyczek. Na oficjalnej stronie możemy znaleźć kompletną dokumentację, odnośniki do wielu stron pokazujących zastosowania frameworka wraz z opisami i „trochę” wtyczek.

W opcjach walidacji można ustawić np. maksymalną i minimalną długość/wartość pola. Samo sprawdzanie przebiega w locie (podczas wprowadzania danych) oraz przy wysyłaniu.

Oczywiście po stronie serwera dane są również weryfikowane. ;)

2 komentarze

dopisz swój :: trackback :: RSS z komentarzami

RSS z komentarzami :: trackback

Skomentuj

Możesz używać znaczników XHTML. Dozwolone są następujące tagi: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

Wszystkie komentarze przechodzą przez moderację oraz filtry antyspamowe. Nie zostanie opublikowany komentarz, jeśli:

  • Jego treść obraża kogokolwiek.
  • W treści znajdują się wulgaryzmy i słownictwo ogólnie uznane za nieprzyzwoite.
  • Mam wątpliwości co do autora wpisu (Wszelkie anonimy są kasowane - niezależnie od zawartości - wpisz prawdziwy e-mail. Jeśli usunąłem, Twoim zdaniem, komentarz niesłusznie - daj znać). Zdarza się, iż sprawdzam kim jest komentujący.
  • Zawiera jakąkolwiek formę reklamy.

Warning: Undefined variable $user_ID in /usr/home/er1zpl/domains/eriz.pcinside.pl/public_html/weblog/wp-content/themes/inBlueDiary/comments.php on line 112

Szufladka