{"id":66,"date":"2006-11-25T01:11:51","date_gmt":"2006-11-24T23:11:51","guid":{"rendered":"http:\/\/www.eriz.pc-inside.org\/weblog\/2006\/11\/25\/walidator-formularzy-i-jquery\/"},"modified":"2007-02-12T22:54:15","modified_gmt":"2007-02-12T21:54:15","slug":"walidator-formularzy-i-jquery","status":"publish","type":"post","link":"https:\/\/eriz.pcinside.pl\/weblog\/walidator-formularzy-i-jquery-66.html","title":{"rendered":"Walidator formularzy i jQuery"},"content":{"rendered":"<p>\nPrace nad Vexerianem ca\u0142y czas trwaj\u0105. Kilka kamieni milowych osi\u0105gni\u0119tych, par\u0119 kwestii wyja\u015bnionych, dzia\u0142a OK.\n<\/p>\n<p>\nKolejn\u0105 &#8222;mil\u00f3wk\u0105&#8221; jest klasa obs\u0142ugi formularzy. Wychodz\u0105c z za\u0142o\u017cenia <cite>&#8222;pom\u0119cz\u0119 si\u0119 wcze\u015bniej, p\u00f3\u017aniej b\u0119dzie lu\u017aniej&#8221;<\/cite> postanowi\u0142em napisa\u0107 sobie kompleksow\u0105 klas\u0119 obs\u0142ugi formularzy. Pomys\u0142 wpad\u0142 mi do g\u0142owy po drodze, tylko nie pami\u0119tam ju\u017c do czego. <img src=\"https:\/\/eriz.pcinside.pl\/weblog\/wp-includes\/images\/smilies\/e_smile.png\" alt=\":)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> Wracaj\u0105c &#8211; za\u0142o\u017cy\u0142em sobie obs\u0142ug\u0119 kilku p\u00f3l:\n<\/p>\n<p><!--more--><\/p>\n<ul>\n<li><strong>text<\/strong> &#8211; IMHO m\u00f3wi samo za siebie<\/li>\n<li><strong>longtext<\/strong> &#8211; wypociny do textarea<\/li>\n<li><strong>integer<\/strong> &#8211; dane liczbowe<\/li>\n<li><strong>select<\/strong> &#8211; lista wyboru<\/li>\n<li><strong>radio<\/strong> &#8211; radioboxy<\/li>\n<li><strong>checkbox<\/strong> &#8211; <img src=\"https:\/\/eriz.pcinside.pl\/weblog\/wp-includes\/images\/smilies\/e_laugh.png\" alt=\":D\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/li>\n<li><strong>file<\/strong> &#8211; plik<\/li>\n<li><strong>date<\/strong> &#8211; generuje trzy selecty na wyb\u00f3r daty<\/li>\n<li><strong>email<\/strong> &#8211; adres e-mail<\/li>\n<li><strong>password<\/strong> &#8211; has\u0142o+pole na potwierdzenie<\/li>\n<li><strong>IP<\/strong> &#8211; adres IP<\/li>\n<\/ul>\n<p>Oczywi\u015bcie po stronie go\u015bcia jest sprawdzanie, bo nie ma nic gorszego ni\u017c wklepanie wszystkiego, klikni\u0119cie &#8222;Wy\u015blij&#8221;, a tu potem klops &#8211; jedno pole niewype\u0142nione i jeszcze nie wiadomo kt\u00f3re to by\u0142o.<\/p>\n<p>Pocz\u0105tkowo m\u0119czy\u0142em si\u0119 z przekazywaniem informacji dotycz\u0105cych p\u00f3l do skrypt\u00f3w po stronie u\u017cytkownika. (X)HTML nie ma przecie\u017c pola typu <em>IP<\/em> czy <em>date<\/em>. Oczywi\u015bcie jest JSON, ale przy jego wykorzystaniu spada &#8222;przeno\u015bno\u015b\u0107&#8221; &#8211; definicja ka\u017cdego formularza musi zosta\u0107 przes\u0142ana osobno. Przyszed\u0142 mi do g\u0142owy za to inny pomys\u0142. Mianowicie, przekazywanie danych poprzez klasy (<strong>class<\/strong> w atrybutach znacznika). Okaza\u0142o si\u0119, \u017ce idea sprawdza si\u0119 znakomicie. Do tego odpowiednie ubranie formularzy i gra gitara <img src=\"https:\/\/eriz.pcinside.pl\/weblog\/wp-includes\/images\/smilies\/e_wink.png\" alt=\";)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/p>\n<p>\nCo do samego sprawdzania poprawno\u015bci: Wcze\u015bniej m\u0119czy\u0142em si\u0119 z przeskakiwaniem przez <em>document.forms<\/em> i <em>document.getElementById<\/em>. G\u0142upiego robota, nie? Przypomnia\u0142em sobie jednak, \u017ce jest co\u015b takiego jak <a href=\"http:\/\/jquery.com\">jQuery<\/a>. Dlaczego jQuery? Ze wzgl\u0119du na architektur\u0119, z kt\u00f3r\u0105 po prostu a\u017c chce si\u0119 pisa\u0107 aplikacje (tak, z pomoc\u0105 tego <a href=\"http:\/\/pl.wikipedia.org\/wiki\/Framework\">frameworka<\/a> ju\u017c mo\u017cna \u015bmia\u0142o pisa\u0107 aplikacje, a nie tylko zwyk\u0142e skrypty). Jest jeszcze <a href=\"http:\/\/prototype.conio.net\/\">Prototype<\/a>, ale brakuje mi w nim kilku funkcji, a jQuery jest lekki, ma wszystko, czego potrzeba, a nawet jeszcze wi\u0119cej. W <acronym title=\"JavaScript\">JS<\/acronym> brakowa\u0142o mi np. PHP-owskiego odpowiednika <em>foreach<\/em>. Du\u017co mniej trzeba si\u0119 dzi\u0119ki temu naklepa\u0107. <img src=\"https:\/\/eriz.pcinside.pl\/weblog\/wp-includes\/images\/smilies\/e_wink.png\" alt=\";)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> Wylicza\u0107 mo\u017cna d\u0142ugo, ale jeszcze z takich &#8222;nowinek&#8221; musz\u0119 wspomnie\u0107 cho\u0107by o \u0142atwiejszym dost\u0119pie do warstw, ustawianiu zdarze\u0144 i rozszerzalno\u015bci za pomoc\u0105 wtyczek. Na <a href=\"http:\/\/jquery.com\">oficjalnej stronie<\/a> mo\u017cemy znale\u017a\u0107 kompletn\u0105 dokumentacj\u0119, odno\u015bniki do wielu stron pokazuj\u0105cych zastosowania frameworka wraz z opisami i &#8222;troch\u0119&#8221; wtyczek.<\/p>\n<p>W opcjach walidacji mo\u017cna ustawi\u0107 np. maksymaln\u0105 i minimaln\u0105 d\u0142ugo\u015b\u0107\/warto\u015b\u0107 pola. Samo sprawdzanie przebiega w locie (podczas wprowadzania danych) oraz przy wysy\u0142aniu.<\/p>\n<p>Oczywi\u015bcie po stronie serwera dane s\u0105 r\u00f3wnie\u017c weryfikowane. <img src=\"https:\/\/eriz.pcinside.pl\/weblog\/wp-includes\/images\/smilies\/e_wink.png\" alt=\";)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Prace nad Vexerianem ca\u0142y czas trwaj\u0105. Kilka kamieni milowych osi\u0105gni\u0119tych, par\u0119 kwestii wyja\u015bnionych, dzia\u0142a OK. Kolejn\u0105 &#8222;mil\u00f3wk\u0105&#8221; jest klasa obs\u0142ugi formularzy. Wychodz\u0105c z za\u0142o\u017cenia &#8222;pom\u0119cz\u0119 si\u0119 wcze\u015bniej, p\u00f3\u017aniej b\u0119dzie lu\u017aniej&#8221; postanowi\u0142em napisa\u0107 sobie kompleksow\u0105 klas\u0119 obs\u0142ugi formularzy. Pomys\u0142 wpad\u0142 mi do g\u0142owy po drodze, tylko nie pami\u0119tam ju\u017c do czego. Wracaj\u0105c &#8211; za\u0142o\u017cy\u0142em sobie obs\u0142ug\u0119 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[93,74],"_links":{"self":[{"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/posts\/66"}],"collection":[{"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/comments?post=66"}],"version-history":[{"count":0,"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/posts\/66\/revisions"}],"wp:attachment":[{"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/media?parent=66"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/categories?post=66"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/tags?post=66"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}