Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MarcDu

Cep preenche endereço,bairro,estado

Recommended Posts

OI!!!!

 

Neste endereço;

 

http://www.seucurso.com.br/index.php?option=com_content&view=article&id=398:preenchendo-campos-de-endereco-usando-somente-o-cep-autocomplete&catid=920:javascript&Itemid=85

 

Tem um exemplo bem simples funcional e bem explicado que da pra aplicar a qualquer formulário de cadastro sem muita dificuldade.

<!DOCTYPE html>
<html lang="en">
 <head>
 <meta charset="UTF-8">
 <title>Buscando informações de um endereço através do CEP</title>
 </head>
 <body>
 CEP: <input type="text" id="cep" maxlength="9" placeholder="Ex: 13483-087"/><br/>
 Endereço: <input type="text" id="endereco"/><br/>
 Bairro: <input type="text" id="bairro"/><br/>
 Cidade: <input type="text" id="cidade"/><br/>
 UF: <input type="text" id="uf"/>
 
 <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
 <script>
 // Registra o evento blur do campo "cep", ou seja, quando o usuário sair do campo "cep" faremos a consulta dos dados
 $("#cep").blur(function(){
 // Para fazer a consulta, removemos tudo o que não é número do valor informado pelo usuário
 var cep = this.value.replace(/[^0-9]/, "");
 
 // Validação do CEP; caso o CEP não possua 8 números, então cancela a consulta
 if(cep.length!=8){
 return false;
 }
 
 // Utilizamos o webservice "viacep.com.br" para buscar as informações do CEP fornecido pelo usuário.
 // A url consiste no endereço do webservice ("http://viacep.com.br/ws/"), mais o cep que o usuário
 // informou e também o tipo de retorno que desejamos, podendo ser "xml", "piped", "querty" ou o que
 // iremos utilizar, que é "json"
 var url = "http://viacep.com.br/ws/"+cep+"/json/";
 
 // Aqui fazemos uma requisição ajax ao webservice, tratando o retorno com try/catch para que caso ocorra algum
 // erro (o cep pode não existir, por exemplo) o usuário não seja afetado, assim ele pode continuar preenchendo os campos
 $.getJSON(url, function(dadosRetorno){
 try{
 // Insere os dados em cada campo
 $("#endereco").val(dadosRetorno.logradouro);
 $("#bairro").val(dadosRetorno.bairro);
 $("#cidade").val(dadosRetorno.localidade);
 $("#uf").val(dadosRetorno.uf);
 }catch(ex){}
 });
 });
 </script>
 </body>
</html>

Eu consegui colocor no cadastro da minha loja Oscommerce, mas o problema é que alguns CEP´s demoram pra retornar, alguém tem alguma idéia de como c0olocar uma imagem gif do lado do campo CEP tipo frete fácil pagseguro que gira enquanto retorna os dados?

 

Claro que eu aceito qualquer outra ideia que de ao usuário a noção que ele deve esperar os campos serem carregados,

 

De mais eu só posso continuar a agradecer a ajuda e o tempo que vcs dispenam pra ajudar nas respostas.

 

De novo o meu muito obrigado.

Marcelo

Compartilhar este post


Link para o post
Compartilhar em outros sites

As vezes pode ser problema do servidor lá que envia os dados do CEP. Eu não entendo bem de JS mas, como eu uso tambem o sistema de CEP, muitas vezes achei que era algum problema no meu site e era apenas alguma dificuldade com o servidor (do CEP)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, Obrigado pela resposta, vc teria algum exemplo que desse pra adicionar uma ação pra que o usuário soubesse que esta carregando? É eu imaginei mesmo eu uso um serviço gratuito viacep.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta tranquilo @ApenasEu, se a solução aparecer ou eu encontrar (vou continuar testando) eu posto e se vc quiser da uma arrumada no seu cadastro, porque vc sabe que tem CEP que demora uma eternidade pra retornar, bom finalzinho de domingo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa..valeu pela compreensão :)

 

Pelo menos o meu sistema aqui no meu pc nunca tive problema. Se você manja bem de códs JS e PHP tenta os dessa página:

http://www.republicavirtual.com.br/cep/exemplos.php

 

O meu sistema de CEP utiliza o sistema desse site. Quem sabe seja mais rápido, daí não precisaria do efeito de load. Aqui sempre foi instantâneo. Uma vez ou outra apenas notei que não funcionava

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deve ser esse código que o @Apenas Eu disse.


function getEndereco() {
	// Se o campo CEP não estiver vazio
	if($.trim($("#cep").val()) != ""){
		/* 
			Para conectar no serviço e executar o json, precisamos usar a função
			getScript do jQuery, o getScript e o dataType:"jsonp" conseguem fazer o cross-domain, os outros
			dataTypes não possibilitam esta interação entre domínios diferentes
			Estou chamando a url do serviço passando o parâmetro "formato=javascript" e o CEP digitado no formulário
			http://cep.republicavirtual.com.br/web_cep.php?formato=javascript&cep="+$("#cep").val()
		*/
		$.getScript("http://cep.republicavirtual.com.br/web_cep.php?formato=javascript&cep="+$("#cep").val(), function(){
			// o getScript dá um eval no script, então é só ler!
			//Se o resultado for igual a 1
			if(resultadoCEP["resultado"]){
				// troca o valor dos elementos
				$("#rua").val(unescape(resultadoCEP["tipo_logradouro"])+": "+unescape(resultadoCEP["logradouro"])+", ");
				$("#bairro").val(unescape(resultadoCEP["bairro"]));
				$("#cidade").val(unescape(resultadoCEP["cidade"]));
				$("#estado").val(unescape(resultadoCEP["uf"]));
				document.form.rua.focus();
			}else{
				alert("Endereço não encontrado");
			}
		});				
	}			
}

Testa aí pra ver se melhora.

No meu caso quando demora já percebi que é tráfego na minha rede.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for usar ele, aí o form precisa estar mais ou menos assim:

<input type="text" id="cep" onBlur="getEndereco()">
<input type="text" id="rua">
<input type="text" id="cidade" >
<input type="text" id="bairro">
<input type="text" id="estado">

Compartilhar este post


Link para o post
Compartilhar em outros sites
<input type="text" id="cep">
<input type="text" id="rua">
<input type="text" id="cidade" >
<input type="text" id="bairro">
<input type="text" id="estado">
$('#cep').change(function(){
    var cep = $(this).val().replace(/\D*/g,'');
    if (cep.length != 8) return;
    $.ajax({
        url: 'http://cep.republicavirtual.com.br/web_cep.php?cep='+cep+'&formato=json',
        dataType: 'json',
        cache: false,
        beforeSend: function(){
            // implemente sua animação aqui
            console.log('processando...');    
        }
    }).done(function(data){
        if (data.resultado > 0){
            $('#rua').val(data.logradouro);
            $('#cidade').val(data.cidade);
            $('#bairro').val(data.bairro);
            $('#estado').val(data.uf);
        }
        else alert('cep não encontrado');
    }).always(function(){
       // esconde animação
       console.log('processo concluído!'); 
    });
});

Demo: http://jsfiddle.net/6fn52t45/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa..valeu pela compreensão :)

 

Pelo menos o meu sistema aqui no meu pc nunca tive problema. Se você manja bem de códs JS e PHP tenta os dessa página:

http://www.republicavirtual.com.br/cep/exemplos.php

 

O meu sistema de CEP utiliza o sistema desse site. Quem sabe seja mais rápido, daí não precisaria do efeito de load. Aqui sempre foi instantâneo. Uma vez ou outra apenas notei que não funcionava

rsrs Eu usava desde 2011

http://addons.oscommerce.com/info/3942

 

QUE BURRO DÁ ZERO PRA MIM, tava tudo funcionando perfeitamente e de uma hora pra outra parou de funcionar, eu mexi no pouco que eu sabia, enADcontrei o código acima, primeiro e lento e coloquei o https e cadastro restabelecido, h0oje eu lendo o posto de vcs (MUITISSIMO OBRIGADO A TODOS, TODO MUNDO QUE POSTO, VALEU MESMO) e eu me dei conta que eu não sei mais como add o https no republica virtual, testei varios endereços, mas no meu create-account.php que era uma página ssl só retorna os dados se o republica virtual tbem estiver em https

 

Estou errado? mudou alguma coisa a este respeito a uns meses? existe um serviço pago pra acessar o websevice em ssl?

 

desabilitei o ssl instalei a recomen dação que vcs me deram e esta funcionando ( menos em https:)

 

se alguêm quiser ver:

 

http://www.apopular.com.br/create_account.php

 

obriggado a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.