{"id":29129,"date":"2021-06-07T10:06:00","date_gmt":"2021-06-07T07:06:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29129"},"modified":"2021-10-18T03:36:37","modified_gmt":"2021-10-18T00:36:37","slug":"walidacja-formularza-html-za-pomoca-pietruszki","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/walidacja-formularza-html-za-pomoca-pietruszki\/","title":{"rendered":"Walidacja formularza HTML za pomoc\u0105 pietruszki"},"content":{"rendered":"<p>Szukasz walidacji w swoim formularzu HTML? Walidacje po stronie klienta s\u0105 pomocne, aby upewni\u0107 si\u0119, \u017ce wszystkie pola formularza s\u0105 wype\u0142nione i maj\u0105 odpowiedni format. Pomaga u\u017cytkownikom natychmiast naprawi\u0107 wszelkie nieprawid\u0142owe dane. Zawsze powiniene\u015b mie\u0107 walidacje po stronie klienta w formularzach swojej witryny. Je\u015bli go pominiesz i zastosujesz tylko walidacj\u0119 po stronie serwera, op\u00f3\u017ani to przes\u0142anie formularza w przypadku jakichkolwiek b\u0142\u0119d\u00f3w.<\/p>\n<p><a href=\"https:\/\/parsleyjs.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Parsley<\/a> to u\u017cyteczna biblioteka do walidacji formularzy, kt\u00f3ra jest \u0142atwa do integracji. Ta biblioteka zapewnia lepszy UX w por\u00f3wnaniu do domy\u015blnych walidacji HTML5. Wystarczy napisa\u0107 kilka stwierdze\u0144 i gotowe. Parsley zapewnia bogaty zestaw opcji, dzi\u0119ki kt\u00f3rym mo\u017cesz rozszerzy\u0107 swoje niestandardowe walidacje. Nie b\u0119d\u0119 omawia\u0107 ka\u017cdej opcji. Celem tego samouczka jest zapoznanie Ci\u0119 z Parsley i pokazanie, jak stosowa\u0107 podstawowe walidacje. Mo\u017cna przejrze\u0107 ich dokumentacj\u0119 i zapozna\u0107 si\u0119 ze wszystkimi funkcjami, jakie udost\u0119pnia biblioteka.<\/p>\n<p>W tym samouczku zamierzam stworzy\u0107 prosty formularz z kilkoma polami, takimi jak imi\u0119 i nazwisko, adres e-mail, p\u0142e\u0107 itp. Wszystkie pola formularza s\u0105 obowi\u0105zkowe i zastosujemy walidacje za pomoc\u0105 Parsley w naszym formularzu.<\/p>\n<p>Aby sprawdzi\u0107 poprawno\u015b\u0107 formularza za pomoc\u0105 Parsley, musimy do\u0142\u0105czy\u0107 jego plik JS. Zrobi\u0119 to za pomoc\u0105 CDN.<\/p>\n<p>Parsley zaleca u\u017cywanie w\u0142asnego stylu dla komunikat\u00f3w o b\u0142\u0119dach. Ale do cel\u00f3w testowych mo\u017cesz u\u017cy\u0107 ich pliku CSS dost\u0119pnego pod <a href=\"https:\/\/parsleyjs.org\/src\/parsley.css\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tym linkiem<\/a>.<\/p>\n<h3>Jak u\u017cywa\u0107 pietruszki?<\/h3>\n<p>W celach demonstracyjnych stworz\u0119 formularz za pomoc\u0105 Bootstrapa. Dlatego do\u0142\u0105cz\u0119 Bootstrap u\u017cywaj\u0105cy CDN wraz z plikami Parsley. W\u0142\u0105czam r\u00f3wnie\u017c jQuery, poniewa\u017c zale\u017cy od niego Parsley.<\/p>\n<pre><code>&lt;link rel=\"stylesheet\" type=\"text\/css\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/twitter-bootstrap\/4.5.3\/css\/bootstrap.min.css\" \/&gt;\n&lt;link rel=\"stylesheet\" type=\"text\/css\" href=\"http:\/\/parsleyjs.org\/src\/parsley.css\" \/&gt;\n&lt;div class=\"container\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;form class=\"form-horizontal\" id=\"signup_form\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"inputFirstName\" class=\"col-sm-2 control-label\"&gt;First Name&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"col-sm-4\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" class=\"form-control\" id=\"inputFirstName\" name=\"first_name\" placeholder=\"First Name\" required&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"inputLastName\" class=\"col-sm-2 control-label\"&gt;Last Name&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"col-sm-4\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" class=\"form-control\" id=\"inputLastName\" name=\"last_name\" placeholder=\"Last Name\" required&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"inputEmail3\" class=\"col-sm-2 control-label\"&gt;Email&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"col-sm-4\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"email\" class=\"form-control\" id=\"inputEmail3\" name=\"email\" placeholder=\"Email\" required&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label class=\"col-sm-2 control-label\"&gt;Gender&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"col-sm-4\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"gender\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"radio\" name=\"gender\" value=\"male\" required&gt; Male\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"radio\" name=\"gender\" value=\"female\" required&gt; Female\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label class=\"col-sm-2 control-label\"&gt;Skills&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"col-sm-4\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"skills\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"checkbox\" name=\"skills[]\" value=\"php\" required&gt; PHP\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"checkbox\" name=\"skills[]\" value=\"mysql\" required&gt; MySQL\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"col-sm-offset-2 col-sm-10\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" class=\"btn btn-primary\"&gt;Sign in&lt;\/button&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/form&gt;\n&lt;\/div&gt;\n\u00a0\n&lt;script type=\"text\/javascript\" src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.5.1\/jquery.min.js\"&gt;&lt;\/script&gt;\n&lt;script type=\"text\/javascript\" src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/twitter-bootstrap\/4.5.3\/js\/bootstrap.min.js\"&gt;&lt;\/script&gt;\n&lt;script type=\"text\/javascript\" src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/parsley.js\/2.9.2\/parsley.min.js\"&gt;&lt;\/script&gt;\n&lt;script type=\"text\/javascript\"&gt;\n\u00a0\u00a0\u00a0\u00a0jQuery('#signup_form').parsley();\n&lt;\/script&gt;<\/code><\/pre>\n<p>W powy\u017cszym kodzie umie\u015bci\u0142em wszystkie wymagane pliki JS i CSS za pomoc\u0105 CDN. W ko\u0144cu u\u017cy\u0142em, <code>$('#signup_form').parsley();<\/code>gdzie #signup_form jest identyfikatorem formularza. Teraz, gdy bezpo\u015brednio naci\u015bniesz przycisk Prze\u015blij, wy\u015bwietl\u0105 si\u0119 b\u0142\u0119dy, jak pokazano na zrzucie ekranu poni\u017cej.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20309-6081dc1dbb937.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20309-6081dc1dbb937.png\" alt=\"Walidacja formularza HTML za pomoc\u0105 pietruszki\" ><\/a><\/p>\n<p>Po naprawieniu wszystkich b\u0142\u0119d\u00f3w Parsley umo\u017cliwia przes\u0142anie formularza, kt\u00f3ry nast\u0119pnie przyjmujesz do przetwarzania po stronie serwera.<\/p>\n<p>Mam nadziej\u0119, \u017ce rozumiesz walidacj\u0119 formularzy HTML przy u\u017cyciu Parsley. Podziel si\u0119 swoimi przemy\u015bleniami i sugestiami w sekcji komentarzy poni\u017cej.<\/p>\n<h3>Powi\u0105zane artyku\u0142y<\/h3>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/wdroz-witryne-statyczna-w-hostingu-firebase-za-darmo\/\" title=\"Wdr\u00f3\u017c witryn\u0119 statyczn\u0105 w Hostingu Firebase za darmo\">Wdr\u00f3\u017c witryn\u0119 statyczn\u0105 w Hostingu Firebase za darmo<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/uzyskaj-liste-filmow-z-youtube-wedlug-slow-kluczowych-za-pomoca-interfejsu-api-wyszukiwania-youtube-i-javascript\/\" title=\"Uzyskaj list\u0119 film\u00f3w z YouTube wed\u0142ug s\u0142\u00f3w kluczowych za pomoc\u0105 interfejsu API wyszukiwania YouTube i JavaScript\">Uzyskaj list\u0119 film\u00f3w z YouTube wed\u0142ug s\u0142\u00f3w kluczowych za pomoc\u0105 interfejsu API wyszukiwania YouTube i JavaScript<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-polaczyc-baze-danych-firebase-realtime-z-formularzem-witryny\/\" title=\"Jak po\u0142\u0105czy\u0107 baz\u0119 danych Firebase Realtime z formularzem witryny?\">Jak po\u0142\u0105czy\u0107 baz\u0119 danych Firebase Realtime z formularzem witryny?<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>ParsleyJS to biblioteka do walidacji formularzy JavaScript o otwartym kodzie \u017ar\u00f3d\u0142owym. W tym artykule dowiemy si\u0119, jak u\u017cywa\u0107 Parsley do walidacji formularzy HTML.<\/p>\n","protected":false},"author":1,"featured_media":21644,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[249],"tags":[847],"class_list":["post-29129","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript-8","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=29129"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29129\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/21644"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=29129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=29129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=29129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}