Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
OI!!!!
Neste endereço;
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
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
Olá!
Então essa parte de animação eu não tenho. Queria te ajudar, mas eu quase não tenho conhecimento em JS
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.
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
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=](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=](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.
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">>
<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!');
});
});
>
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
Que legal que deu certo :)
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)