{"id":21134,"date":"2021-12-28T08:00:01","date_gmt":"2021-12-28T11:00:01","guid":{"rendered":"https:\/\/www.mxcursos.com\/blog\/?p=21134"},"modified":"2021-12-27T20:05:32","modified_gmt":"2021-12-27T23:05:32","slug":"como-consultar-cep-utilizando-javascript","status":"publish","type":"post","link":"https:\/\/www.mxcursos.com\/blog\/como-consultar-cep-utilizando-javascript\/","title":{"rendered":"Como consultar CEP utilizando Javascript"},"content":{"rendered":"<p>Se voc\u00ea est\u00e1 desenvolvendo algum e-commerce, ou mesmo desenvolvendo algo precisa de cadastro onde necessita do endere\u00e7o, algo que facilita bastante para o usu\u00e1rio \u00e9 o preenchimento autom\u00e1tico a partir do CEP.<\/p>\n<p>Temos j\u00e1 no blog uma publica\u00e7\u00e3o de como fazer usando jQuery, mas agora faremos uma vers\u00e3o usando apenas javascript.<\/p>\n<p>A ideia \u00e9 quando usu\u00e1rio digita um cep, e clicar fora do campo de cep, os outros campos de endere\u00e7o sejam preenchidos automaticamente. Esse preenchimento \u00e9 trava de uma requisi\u00e7\u00e3o de uma API, que voc\u00ea informa o CEP, ele vai retornar os dados dos campos.<\/p>\n<p>Sabendo desse fluxo, vamos definir primeiramente o HTML<\/p>\n<p>No HTML ter\u00e1 apenas um formul\u00e1rio com campos de cep, rua, bairro, cidade, e estado.<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;form&gt;\r\n  &lt;div class=&quot;frm-group&quot;&gt;\r\n    &lt;label&gt;CEP&lt;\/label&gt;\r\n    &lt;input type=&quot;text&quot; name=&quot;cep&quot; \/&gt;\r\n  &lt;\/div&gt;\r\n  \r\n   &lt;div class=&quot;frm-group&quot;&gt;\r\n      &lt;label&gt;Rua&lt;\/label&gt;\r\n      &lt;input type=&quot;text&quot; name=&quot;rua&quot; \/&gt;\r\n    &lt;\/div&gt;\r\n    \r\n    &lt;div class=&quot;frm-group&quot;&gt;\r\n      &lt;label&gt;Bairro&lt;\/label&gt;\r\n      &lt;input type=&quot;text&quot; name=&quot;bairro&quot; \/&gt;\r\n    &lt;\/div&gt;\r\n    \r\n    &lt;div class=&quot;frm-group&quot;&gt;\r\n      &lt;label&gt;Cidade&lt;\/label&gt;\r\n      &lt;input type=&quot;text&quot; name=&quot;cidade&quot; \/&gt;\r\n    &lt;\/div&gt;\r\n    \r\n    &lt;div class=&quot;frm-group&quot;&gt;\r\n      &lt;label&gt;Estado&lt;\/label&gt;\r\n      &lt;input type=&quot;text&quot; name=&quot;estado&quot; \/&gt;\r\n    &lt;\/div&gt;\r\n&lt;\/form&gt;\r\n<\/pre>\n<p>Esse formul\u00e1rio temos os campos input, que s\u00e3o englobados por uma div, com classe .frm-group, \u00e9 apenas pra fazermos uma pequena estiliza\u00e7\u00e3o via CSS. Vamos agora aplicar esse estiliza\u00e7\u00e3o<\/p>\n<pre class=\"brush: css; title: ; notranslate\" title=\"\">\r\n.frm-group{\r\n  padding:5px;\r\n}\r\n.frm-group label{\r\n  display: block;\r\n}\r\n\r\n.frm-group:nth-child(1){\r\n  border: 1px solid #CCC;\r\n  background: #e5e5e5;\r\n  padding: 10px 5px;\r\n}\r\n<\/pre>\n<p>Fizemos apenas uma sele\u00e7\u00e3o das div.frm-group, para definir uma espa\u00e7amento, deixar o label como display:block para ele ocupar o espa\u00e7o para fazermos uma quebra de linha, e selecionamento o primeiro campo, que do CEP , para ter uma cor diferente.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-medium wp-image-21137\" src=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2021\/12\/formulario-cep-600x169.png\" alt=\"\" width=\"600\" height=\"169\" srcset=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2021\/12\/formulario-cep-600x169.png 600w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2021\/12\/formulario-cep-768x216.png 768w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2021\/12\/formulario-cep-740x209.png 740w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2021\/12\/formulario-cep-620x175.png 620w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2021\/12\/formulario-cep-24x7.png 24w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2021\/12\/formulario-cep.png 997w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>Agora vamos para o javascript, vamos definir uma fun\u00e7\u00e3o que auto-executa para definirmos um escopo para as que vari\u00e1veis fiquem nesse escopo, par evitar vazamento, e assim evitando poss\u00edveis bug caso voc\u00ea implemente em algum sistema existente.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">(function(){ \r\n\/*Aqui dentro ficar\u00e1 o script*\/ \r\n})(); <\/pre>\n<p>Agora vamos selecionar o campo de CEP e atribuir um evento blur nesse campo, que quando ao clicar fora dele, ele execute alguma a\u00e7\u00e3o<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">(function(){ \r\n\r\n    const cep = document.querySelector(&quot;input&#x5B;name=cep]&quot;);\r\n\r\n    cep.addEventListener('blur', e=&gt; {\r\n    \r\n   });\r\n\r\n })(); <\/pre>\n<p>Pronto, agora precisamos recuperar o que foi digitado, fazer uma limpeza no campo, para deixar apenas n\u00fameros.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">(function(){ \r\n\r\n    const cep = document.querySelector(&quot;input&#x5B;name=cep]&quot;);\r\n\r\n    cep.addEventListener('blur', e=&gt; {\r\n         const value = cep.value.replace(\/&#x5B;^0-9]+\/, '');\r\n         const url = `https:\/\/viacep.com.br\/ws\/${value}\/json\/`;\r\n   });\r\n\r\n })(); <\/pre>\n<p>Recuperamos o valor digitado no campo cep, atraves do atributo value, e usamos a fun\u00e7\u00e3o replace para remover todos os caracteres que n\u00e3o sejam numero, atrav\u00e9s de uma express\u00e3o regular.<br \/>\nAl\u00e9m disso, definimos uma varia\u00e7\u00e3o url, que cont\u00e9m o endpoint para fazer a requisi\u00e7\u00e3o para retornar as informa\u00e7\u00f5es do cep.<\/p>\n<p>Agora vamos realizar a requisi\u00e7\u00e3o usando a fun\u00e7\u00e3o fetch do javascript.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">(function(){ \r\n\r\n    const cep = document.querySelector(&quot;input&#x5B;name=cep]&quot;);\r\n\r\n    cep.addEventListener('blur', e=&gt; {\r\n         const value = cep.value.replace(\/&#x5B;^0-9]+\/, '');\r\n         const url = `https:\/\/viacep.com.br\/ws\/${value}\/json\/`;\r\n\r\n       fetch(url)\r\n      .then( response =&gt; response.json())\r\n      .then( json =&gt; {\r\n      \t\t\r\n        \r\n      \r\n      });\r\n   });\r\n\r\n })(); <\/pre>\n<p>A fun\u00e7\u00e3o <strong>fetch <\/strong>retorna um <strong>Promisse<\/strong>, e acessamos a <strong>Promisse <\/strong>com m\u00e9todo <strong>then<\/strong>, definimos uma <strong>fun\u00e7\u00e3o an\u00f4nima<\/strong> que o par\u00e2metro ser\u00e1 objeto <strong>Response<\/strong>, e assim retornando o m\u00e9todo <strong>json <\/strong>do objeto <strong>Response<\/strong>, que tamb\u00e9m \u00e9 uma <strong>Promisse<\/strong>, e como vimos, para acessar uma Promisse usando o m\u00e9todo <strong>then<\/strong>, definimos uma <strong>fun\u00e7\u00e3o an\u00f4nima<\/strong> recebendo um <strong>json<\/strong>.<\/p>\n<p>Agora fizemos a requisi\u00e7\u00e3o, agora vamos, com Json retornando, vamos preencher os campos.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">(function(){ \r\n\r\n    const cep = document.querySelector(&quot;input&#x5B;name=cep]&quot;);\r\n\r\n    cep.addEventListener('blur', e=&gt; {\r\n         const value = cep.value.replace(\/&#x5B;^0-9]+\/, '');\r\n         const url = `https:\/\/viacep.com.br\/ws\/${value}\/json\/`;\r\n\r\n       fetch(url)\r\n      .then( response =&gt; response.json())\r\n      .then( json =&gt; {\r\n      \t\t\t\r\n          if( json.logradouro ) {\r\n          \tdocument.querySelector('input&#x5B;name=rua]').value = json.logradouro;\r\n                document.querySelector('input&#x5B;name=bairro]').value = json.bairro;\r\n                document.querySelector('input&#x5B;name=cidade]').value = json.localidade;\r\n                document.querySelector('input&#x5B;name=estado]').value = json.uf;\r\n          }\r\n        \r\n      \r\n      });\r\n   });\r\n\r\n })(); <\/pre>\n<p>Na API do viacep, ele retorna algumas informa\u00e7\u00f5es, como logradouro (rua), bairro, localidade (cidade), uf (estado), ele tr\u00e1s tamb\u00e9m o c\u00f3digo do IBGE, mas n\u00e3o vamos utilizar. Vemos se o campo logradouro existe, se existir, selecionamos cada campo, e atribu\u00edmos os valores correspondentes.<\/p>\n<p><iframe style=\"width: 100%;\" src=\"\/\/jsfiddle.net\/davidchc\/jhpwrz1o\/22\/embedded\/js,html,css,result\/dark\/\" width=\"100%\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>Dessa forma, voc\u00ea pode implementar em seus projetos, de uma forma f\u00e1cil e r\u00e1pido usando apenas javascript.<\/p>\n<p>Espero que tenha gostado.<\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<p>Voc\u00ea gostou desse tutorial? Quem tal aprender\u00a0 JavaScript? N\u00f3s possu\u00edmos diversos cursos sobre <a href=\"https:\/\/www.mxcursos.com\/cursos-de-front-end\/\">Front-End<\/a> que ajudar\u00e1 a dominar essa linguagem. N\u00e3o perca tempo, <a href=\"https:\/\/www.mxcursos.com\/clube-do-assinante\/?tracking=blog\">assine agora<\/a>, e venha estudar com a gente.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se voc\u00ea est\u00e1 desenvolvendo algum e-commerce, ou mesmo desenvolvendo algo precisa de cadastro onde necessita do endere\u00e7o, algo que facilita bastante para o usu\u00e1rio \u00e9 o preenchimento autom\u00e1tico a partir do CEP. Temos j\u00e1 no blog uma publica\u00e7\u00e3o de como fazer usando jQuery, mas agora faremos uma vers\u00e3o usando apenas javascript. A ideia \u00e9 quando [&hellip;]<\/p>\n","protected":false},"author":67,"featured_media":21144,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1178],"tags":[1233],"class_list":["post-21134","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacao","tag-javascript"],"_links":{"self":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/posts\/21134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/users\/67"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/comments?post=21134"}],"version-history":[{"count":0,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/posts\/21134\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/media\/21144"}],"wp:attachment":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/media?parent=21134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/categories?post=21134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/tags?post=21134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}