{"componentChunkName":"component---src-templates-blog-post-js","path":"/en/writing/awesome-jquery-form/","result":{"data":{"site":{"siteMetadata":{"title":"Um site de um desenvolvedor de software","author":"Dheyson L. Alves","description":"Um site sobre computação e desenvolvimento","charSet":"utf8"}},"locales":{"edges":[{"node":{"ns":"translation","data":"{\"Home\":\"Home\",\"Escrita\":\"Writing\",\"Portfólio\":\"Portfolio\",\"Sobre\":\"About\",\"Últimas publicações\":\"Latest Posts\",\"Engenheiro de Software com mais de 3 anos de experiência na indústria. Ajudando empresas de diferentes nichos a atingir seu potencial com aplicativos de software.\":\"Software Engineer with more than 3 years of experience in the industry. Helping companies from different niches to reach their potential with software applications.\",\"Codando. Escrevendo. Aprendendo. Ensinando.\":\"Coding. Writing. Learning. Teaching.\",\"CSS, JAVASCRIPT, TYPESCRIPT, REACT E FRONT-END NO GERAL.\":\"CSS, JAVASCRIPT, TYPESCRIPT, REACT AND FRONT-END WORLD.\",\"Front-End Engineer\":\"Front-End Engineer\",\"Opa, e ai?\":\"Hey, what's up\",\"Página principal\":\"Main page\",\"Alguns artigos que escrevi\":\"Some articles I wrote\",\"Meus atuais projetos\":\"My current projects\",\"Que tal acender a luz?\":\"How about turning on the light?\",\"Que tal apagar a luz?\":\"How about turning off the light?\",\"Logo do Linkedin rede social\":\"Linkedin logo social network\",\"Minha rede profissional\":\"My professional network\",\"Logo do passado com cor branca do twitter\":\"Logo of the past with twitter color white\",\"Quer trocar uma ideia?, manda dm\":\"Want to exchange an idea?, send a dm\",\"social media\":\"Social Media\",\"Boa parte dos meus projetos\":\"Most of my projects\",\"Logo quadrada com fundo preto com texto DEV no meio de cor branca\":\"Square logo with black background with DEV text in the middle of white color\",\"Meus outros artigos em inglês\":\"My other articles in English\",\"Logo quadrada com fundo preto com símbolo de controle no meio\":\"Square logo with black background with control symbol in the middle\",\"Comunidade do discord da Coffer\":\"Coffer's discord community\",\"Todas as publicações\":\"All publications\",\"Postado em\":\"Posted in\",\"Uma página de erro que poderia encontrar a solicitação.\":\"An error page that could find the request.\",\"Ah não! Algo está errado...\":\"Oh no! Something is wrong...\",\"Você clicou em uma rota que não existe ... que pena.\":\"You clicked on a route that doesn't exist... what a pity.\",\"Dheyson L. Alves - Sobre\":\"Dheyson L. Alves - About\",\"Olá, sou Dheyson L. Alves\":\"Hi, I am Dheyson L. Alves\",\"Engenheiro de Software com 3 anos de experiência na indústria. Ajudando empresas de diferentes origens aatingir seu potencial com aplicativos de software.\":\"Software Engineer with 3 years of experience in the industry. Helping companies from different backgrounds reach their potential with software applications.\",\"Além disso, criei com estudantes universitários uma comunidade de desenvolvedores chamada CofferHub. Foco em ensinar e aprender juntos. Fico entusiasmado com as oportunidades em que posso trabalhar com produtos que impactam muitas pessoas. Além disso, trabalhar com uma equipe com uma mentalidade de crescimento e aprendizado.\":\"In addition, I created with college students a developer community called CofferHub. Focus on teaching and learning together. I am excited about the opportunities where I can work with products that impact many people. Also, working with a team with a growth and learning mindset.\",\"minutos de leitura\":\"reading time\",\"Escrito por\":\"Written by\",\"Pesquise por tags\":\"Search by tags\",\"artigo\":\"article\",\"artigos\":\"articles\",\"Artigo não encontrado\":\"Article not found\",\"Parece que você chegou a uma pesquisa que não existe. Por favor, use a navegação acima ou pesquise acima para encontrar o caminho de volta ao nosso site daora.\":\"It looks like you've come to a search that doesn't exist. Please use the navigation above or search above to find your way back to our cool website.\",\"Mais Artigos\":\"More Articles\"}","language":"en"}}]},"markdownRemark":{"id":"de54f4ea-490c-5cbd-88bb-6148a9564995","excerpt":"Introdução Toda vez que iniciava a criar um formulário, eu pensava, “Estou fazendo algo que já fiz, eu devia reutilizar de algum lugar”. Eu tinha essa…","html":"<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 590px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/2b366974581f86ad7c57e219c26e93d6/b9024/form-validation.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 62.16216216216216%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB6klEQVQoz4WR3W7TQBCF/d6IK8QD8AQ8AZXgBonbXlIFlaKAKIi4TmLHievf9Xr/cjizSUraXmDpaOxk98x3ZhKcPfv9PtZxnHDz5RK71S1w+Rbh3Qv4D6/h379C+PQG/uIl9l8/Hu6EIBcfPBIxOUkerTWKosBsNkN6d4fl4jd+/ZgjS/8g/TnHYn6N9OYzittvsM4/AomG53Qiay2GYUBZltG4aTus8zxqU26RrXKUu4p1jaqqnhsejAKeRnfORXNrDByrkIusdRiaHMGZRyAnJW5SSL9foW5aNHVNNfjfcwb0DCSx3mKz2+C+a9GOAzrKOIuJkho4dE+NeoSeJpADYX/4zZBcksiZcEyZyKXVtkSWL6EsY7HBaKcoRbVM0OgB66pEyjNV38TvbVcjK3Ms1hkGo+N56x2SwA5OszO7sR2rg+e757soeB8Jei5KKdLzcmA0oev6DnVdQdNMc6ZCGQ3HroceFIKhqSc6TeD+KUwGy22BTb1DrTp0pBb1TDSIjoQueCTiXjb3aFSPTqsYU6St4RwpVokiROOoHgh9nK2PcgSYIiGXos2EZZEj4yxadpc/9BMpmvRmpA5V6Noznb7jlsdJ02yF9SbHQMIpbtgclkIDWZQ6LkmopRoSy7zido8blhRi+BcmM6AslHJV6QAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Awesome Form Validation\"\n        title=\"Awesome Form Validation\"\n        src=\"/static/2b366974581f86ad7c57e219c26e93d6/fcda8/form-validation.png\"\n        srcset=\"/static/2b366974581f86ad7c57e219c26e93d6/12f09/form-validation.png 148w,\n/static/2b366974581f86ad7c57e219c26e93d6/e4a3f/form-validation.png 295w,\n/static/2b366974581f86ad7c57e219c26e93d6/fcda8/form-validation.png 590w,\n/static/2b366974581f86ad7c57e219c26e93d6/efc66/form-validation.png 885w,\n/static/2b366974581f86ad7c57e219c26e93d6/c83ae/form-validation.png 1180w,\n/static/2b366974581f86ad7c57e219c26e93d6/b9024/form-validation.png 1203w\"\n        sizes=\"(max-width: 590px) 100vw, 590px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<h1>Introdução</h1>\n<p>Toda vez que iniciava a criar um formulário, eu pensava, <em>“Estou fazendo algo que já fiz, eu devia reutilizar de algum lugar”.</em> Eu tinha essa necessidade toda vez, embora exista bastantes modelos na internet, queria um em que eu sabia diretamente onde encontrar, principalmente para formulários em um ambiente JavaScript Puro ou JQUERY. Então pensei em criar um padrão para mim, pensando nos principais casos para formulários.</p>\n<h2>A Estrutura do Projeto</h2>\n<p>No mundo de JQUERY, existem bastantes plugins para lidar com formulários, seja para validações, ou para máscaras. Busquei utilizar o JQUERY Validator com o JQUERY Plugin Mask. O nome de ambos já informa para que serve cada um, e acho que foi um casamento bom dos dois plugins.</p>\n<p>Nos estilos, busquei o bootstrap 5 beta, uma versão que está livre para testes, que também tem novidades, principalmente para a forma de utilizar as suas classes, comentarei mais a frente.</p>\n<p>Sobre os campos do formulário, busquei utilizar alguns campos comuns para um usuário padrão, e também informações de pagamento com cartão de crédito. No qual, acredito cobrir boa parte dos tipos de formulário que já enfrentei.</p>\n<p>Criei um repositório no Github, para armazenar o projeto. Sempre quando crio meus projetos por lá, deixo bem organizado para contribuições, então caso queira dar uma olhada e como contribuir no projeto final, segue link: <a href=\"https://github.com/Dheyson/awesome-form-jquery-validator\">Github link</a></p>\n<p>E aqui você pode ver uma demo: <a href=\"https://dheyson.github.io/awesome-form-jquery-validator/index.html\">Demo</a></p>\n<h2>Os Plugins de Validação</h2>\n<p>Ambas as ferramentas são bem customizáveis, podendo adicionar regras de várias formas, seja as <em>built-in</em> ou suas próprias. Vou passar por cada uma, com exemplos do código do projeto, e também apresentando meus desafios.</p>\n<h3>JQUERY Validation Plugin</h3>\n<p>Sua configuração é simples, basta adicionar os arquivos baixados da documentação oficial, nas tags script do HTML principal, e está pronto para utilizar.</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">*type*</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text/javascript<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">*src*</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>js/jquery.validate.min.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>    \n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">*type*</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text/javascript<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">*src*</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>js/additional-methods.min.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">*type*</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text/javascript<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">*src*</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>js/localization/messages_pt_BR.min.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>Um arquivo que se mostrou bastante útil também, é o de mensagens, onde é guardado os textos padrões para as principais regras do plugin. O que me ajudou a economizar tempo, escrevendo textos para os erros padrões.</p>\n<p>Certo, configurado o acesso ao plugin, agora vamos a obra.</p>\n<p>Uma pequena observação: Não vou focar neste artigo no HTML, mas apenas nas validações do form, então vou deixar um link para o arquivo do HTML completo, se quiser ver em detalhes. Mas basicamente, as regras se aplicam a cada input específico.</p>\n<p><a href=\"https://github.com/Dheyson/awesome-form-jquery-validator/blob/main/index.html\">Html do projeto</a></p>\n<p>Primeiro definimos qual form será validado, no nosso caso, é o:</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>form</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>row g-3<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>awesome-form<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>form</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>Então, no arquivo de script, criamos essa estrutura:</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token function\">$</span><span class=\"token punctuation\">(</span><span class=\"token string\">'#awesome-form'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">validate</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n  debug<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n  rules<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    fullnameinput<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      required<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputBirthData<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      required<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n      date<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputPhoneNumber<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      required<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n      pattern<span class=\"token operator\">:</span> <span class=\"token regex\"><span class=\"token regex-delimiter\">/</span><span class=\"token regex-source language-regex\">\\(\\d{2,}\\) \\d{4,}\\-\\d{4}</span><span class=\"token regex-delimiter\">/</span></span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputCPF<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      cpfBR<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n      required<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputCNPJ<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      cnpjBR<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputEmail<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      email<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n      required<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputConfirmEmail<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      equalTo<span class=\"token operator\">:</span> <span class=\"token string\">'#inputEmail'</span><span class=\"token punctuation\">,</span>\n      required<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputZip<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      postalcodeBR<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputCardNumber<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      creditcard<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n      required<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputPrintName<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      letterswithbasicpunc<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n      required<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputAddress<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      required<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputCity<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      required<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputPassword<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      required<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n      pattern<span class=\"token operator\">:</span> <span class=\"token regex\"><span class=\"token regex-delimiter\">/</span><span class=\"token regex-source language-regex\">^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\\$%\\^&amp;\\*])(?=.{8,})</span><span class=\"token regex-delimiter\">/</span></span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputNeight<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      required<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputMonthCard<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      required<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n      pattern<span class=\"token operator\">:</span> <span class=\"token regex\"><span class=\"token regex-delimiter\">/</span><span class=\"token regex-source language-regex\">^(0?[1-9]|1[012])$</span><span class=\"token regex-delimiter\">/</span></span><span class=\"token punctuation\">,</span>\n      min<span class=\"token operator\">:</span> <span class=\"token number\">01</span><span class=\"token punctuation\">,</span>\n      max<span class=\"token operator\">:</span> <span class=\"token number\">12</span><span class=\"token punctuation\">,</span>\n      digits<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputYearCard<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      required<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n      min<span class=\"token operator\">:</span> <span class=\"token number\">18</span><span class=\"token punctuation\">,</span>\n      max<span class=\"token operator\">:</span> <span class=\"token number\">28</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    inputCVV<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      required<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n      pattern<span class=\"token operator\">:</span> <span class=\"token regex\"><span class=\"token regex-delimiter\">/</span><span class=\"token regex-source language-regex\">^[0-9]{3,4}$</span><span class=\"token regex-delimiter\">/</span></span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  validClass<span class=\"token operator\">:</span> <span class=\"token string\">'border-success border-2'</span><span class=\"token punctuation\">,</span>\n  errorClass<span class=\"token operator\">:</span> <span class=\"token string\">'border-danger border-2'</span><span class=\"token punctuation\">,</span>\n  <span class=\"token function-variable function\">success</span><span class=\"token operator\">:</span> <span class=\"token keyword\">function</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">label</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    label<span class=\"token punctuation\">.</span><span class=\"token function\">addClass</span><span class=\"token punctuation\">(</span><span class=\"token string\">'valid'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">text</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Everything Ok! 🎉'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token function-variable function\">submitHandler</span><span class=\"token operator\">:</span> <span class=\"token keyword\">function</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">form</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    form<span class=\"token punctuation\">.</span><span class=\"token function\">submit</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Embora possamos adicionar outras opções, para nosso caso, vamos precisar apenas desses. Vou explicar cada atributo abaixo:</p>\n<ul>\n<li>debug</li>\n</ul>\n<p>O atributo, permite receber no console, qualquer erro da validação ou sucesso de validação, ele evita a submissão do formulário para apresentar essas informações. Ele faz o debug também de campos com nomes impróprios para formulário.</p>\n<ul>\n<li>rules</li>\n</ul>\n<p>Apresenta as regras dos inputs do formulário. Existem bastantes regras padrões do plugin, mas o melhor, é a possibilidade de criar métodos separados para o plugin e adicionar como uma regra. Seja um simples regex, ou um algoritmo complexo. Na documentação, ele apresenta uma lista de bastante casos pensados pela comunidade: <a href=\"https://github.com/jquery-validation/jquery-validation/tree/master/src/additional\">Validações customizados</a></p>\n<ul>\n<li>validClass</li>\n</ul>\n<p>Adiciona o estilo no input caso ele seja validado pelo rules, ele fica escutando se o campo foi validado.</p>\n<ul>\n<li>errorClass</li>\n</ul>\n<p>O mesmo caso anterior, mas para errors dos campos.</p>\n<ul>\n<li>success</li>\n</ul>\n<p>Adiciona uma label quando o campo for validado.</p>\n<ul>\n<li>submitHandler</li>\n</ul>\n<p>Evento para submeter o formulário, após validação dos campos.</p>\n<p>Esses são os atributos padrões do formulário que estamos utilizando, na próxima parte vamos entrar em detalhes sobre como está sendo feito as validações com o regex e os métodos customizados nas regras.</p>","timeToRead":4,"frontmatter":{"title":"Awesome Form Validation - Parte 1","date":"January 12, 2021","description":"Toda vez que iniciava a criar um formulário, eu pensava, Estou fazendo algo que já fiz, eu devia reutilizar de algum lugar. Eu tinha essa necessidade toda vez, embora exista bastantes modelos na internet, queria um em que eu sabia diretamente onde encontrar, principalmente para formulários em um ambiente JavaScript Puro ou JQUERY.","tags":["JAVASCRIPT"]}}},"pageContext":{"slug":"/awesome-jquery-form/","previous":{"fields":{"slug":"/meu-coworker-perguntou2/"},"frontmatter":{"title":"Como definir uma tag script corretamente e carregar os scripts no Laravel Framework?","tags":["JAVASCRIPT","PHP"]}},"next":{"fields":{"slug":"/como-implementar-gitflow/"},"frontmatter":{"title":"Como implementar o GitFlow?","tags":["GIT"]}},"language":"en","i18n":{"language":"en","languages":["pt","en"],"defaultLanguage":"pt","generateDefaultLanguagePage":false,"routed":true,"originalPath":"/writing/awesome-jquery-form/","path":"en/writing/awesome-jquery-form/"}}},"staticQueryHashes":["63159454"]}