{"id":28334,"date":"2021-06-07T09:33:00","date_gmt":"2021-06-07T06:33:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28334"},"modified":"2021-10-18T04:03:58","modified_gmt":"2021-10-18T01:03:58","slug":"validacao-de-formulario-html-usando-o-parsley","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/validacao-de-formulario-html-usando-o-parsley\/","title":{"rendered":"Valida\u00e7\u00e3o de formul\u00e1rio HTML usando o Parsley"},"content":{"rendered":"<p>Voc\u00ea est\u00e1 procurando aplicar valida\u00e7\u00f5es em seu formul\u00e1rio HTML? As valida\u00e7\u00f5es do lado do cliente s\u00e3o \u00fateis para garantir que todos os campos do formul\u00e1rio sejam preenchidos e em um formato adequado. Ajuda os usu\u00e1rios a corrigir quaisquer dados inv\u00e1lidos imediatamente. Voc\u00ea deve sempre ter valida\u00e7\u00f5es do lado do cliente nos formul\u00e1rios do seu site. Se voc\u00ea pular e aplicar apenas a valida\u00e7\u00e3o do lado do servidor, isso atrasar\u00e1 o envio do formul\u00e1rio em caso de erros.<\/p>\n<p><a href=\"https:\/\/parsleyjs.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">O Parsley<\/a> \u00e9 uma biblioteca de valida\u00e7\u00e3o de formul\u00e1rios \u00fatil, de f\u00e1cil integra\u00e7\u00e3o. Esta biblioteca oferece uma UX melhor em compara\u00e7\u00e3o com as valida\u00e7\u00f5es HTML5 padr\u00e3o. Voc\u00ea precisa escrever apenas algumas declara\u00e7\u00f5es e pronto. O Parsley oferece um rico conjunto de op\u00e7\u00f5es com as quais voc\u00ea pode estender suas valida\u00e7\u00f5es personalizadas. N\u00e3o vou cobrir cada op\u00e7\u00e3o. O objetivo deste tutorial \u00e9 familiariz\u00e1-lo com o Parsley e mostrar como aplicar as valida\u00e7\u00f5es b\u00e1sicas. Pode-se explorar sua documenta\u00e7\u00e3o e se familiarizar com todos os recursos que a biblioteca oferece.<\/p>\n<p>Para este tutorial, vou criar um formul\u00e1rio simples com poucos campos como nome, email, sexo, etc. Todos os campos do formul\u00e1rio s\u00e3o obrigat\u00f3rios e aplicaremos valida\u00e7\u00f5es usando o Parsley em nosso formul\u00e1rio.<\/p>\n<p>Para validar o formul\u00e1rio usando o Parsley, precisamos incluir seu arquivo JS. Vou fazer isso usando CDN.<\/p>\n<p>Parsley recomenda usar seu pr\u00f3prio estilo para mensagens de erro. Mas, para fins de teste, voc\u00ea pode usar o arquivo CSS dispon\u00edvel <a href=\"https:\/\/parsleyjs.org\/src\/parsley.css\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">neste link<\/a>.<\/p>\n<h3>Como usar a salsa<\/h3>\n<p>Para fins de demonstra\u00e7\u00e3o, vou criar um formul\u00e1rio usando Bootstrap. Portanto, incluirei o Bootstrap usando CDN junto com os arquivos do Parsley. Tamb\u00e9m estou incluindo o jQuery, pois Parsley depende dele.<\/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>No c\u00f3digo acima, inclu\u00ed todos os arquivos JS e CSS necess\u00e1rios usando CDN. Por fim, usei <code>$('#signup_form').parsley();<\/code>onde #signup_form \u00e9 o id do formul\u00e1rio. Agora, quando voc\u00ea clicar no bot\u00e3o Enviar diretamente, os erros ser\u00e3o exibidos, conforme mostrado na captura de tela abaixo.<\/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=\"Valida\u00e7\u00e3o de formul\u00e1rio HTML usando o Parsley\" ><\/a><\/p>\n<p>Assim que todos os erros forem corrigidos, o Parsley permite que voc\u00ea envie um formul\u00e1rio que voc\u00ea ent\u00e3o usa para processamento do lado do servidor.<\/p>\n<p>Espero que voc\u00ea entenda a valida\u00e7\u00e3o de formul\u00e1rio HTML usando o Parsley. Por favor, compartilhe seus pensamentos e sugest\u00f5es na se\u00e7\u00e3o de coment\u00e1rios abaixo.<\/p>\n<h3>Artigos relacionados<\/h3>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/implante-site-estatico-no-firebase-hosting-gratuitamente\/\" title=\"Implante site est\u00e1tico no Firebase Hosting gratuitamente\">Implante site est\u00e1tico no Firebase Hosting gratuitamente<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/obtenha-a-lista-de-videos-do-youtube-por-palavras-chave-usando-a-api-de-pesquisa-do-youtube-e-o-javascript\/\" title=\"Obtenha a lista de v\u00eddeos do YouTube por palavras-chave usando a API de pesquisa do YouTube e o JavaScript\">Obtenha a lista de v\u00eddeos do YouTube por palavras-chave usando a API de pesquisa do YouTube e o JavaScript<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-conectar-o-firebase-realtime-database-ao-formulario-do-seu-site\/\" title=\"Como conectar o Firebase Realtime Database ao formul\u00e1rio do seu site\">Como conectar o Firebase Realtime Database ao formul\u00e1rio do seu site<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <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 \u00e9 uma biblioteca de valida\u00e7\u00e3o de formul\u00e1rio JavaScript de c\u00f3digo aberto. Neste artigo, estudamos como usar o Parsley para valida\u00e7\u00e3o de formul\u00e1rios 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":[250],"tags":[848],"class_list":["post-28334","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript-9","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28334","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=28334"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28334\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21644"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=28334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=28334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=28334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}