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 –
- 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.
jQuery jest zajebisty, swojego Mappeta pisałem dzięki temu 3x szybciej, skupiając się na algorytmach a nie skrobaniu
document.getEle…
over & over again.