I'm using a webService (viaCep) to automatically fill in the street, for when the user enters a zip code. The webService returns a json with the information of the street, and of that return I fill in the inputs referring (Street, city, etc ...).
When I manually enter the address information for the address, I get the same information in the request.
When the fields are populated with the WebService information, when the form request is obtained, the fields (City, State, Street, etc.) arrive null .
JavaScript that returns the json of the WebService:
function limpa_formulário_cep() {
document.getElementById('endereco').value = ("");
document.getElementById('bairro').value = ("");
document.getElementById('cidade').value = ("");
document.getElementById('estado').value = ("");
}
function meu_callback(conteudo) {
if (!("erro" in conteudo)) {
document.getElementById('endereco').value = (conteudo.logradouro);
document.getElementById('bairro').value = (conteudo.bairro);
document.getElementById('cidade').value = (conteudo.localidade);
document.getElementById('estado').value = (conteudo.uf)
}
else {
limpa_formulário_cep();
alert("CEP não encontrado.");
}
}
function pesquisacep(valor) {
var cep = valor.replace(/\D/g, '');
if (cep != "") {
var validacep = /^[0-9]{8}$/;
if (validacep.test(cep)) {
document.getElementById('endereco').value = "...";
document.getElementById('bairro').value = "...";
document.getElementById('cidade').value = "...";
document.getElementById('estado').value = "...";
var script = document.createElement('script');
script.src = 'https://viacep.com.br/ws/' + cep + '/json/?callback=meu_callback';
document.body.appendChild(script);
}
else {
limpa_formulário_cep();
alert("Formato de CEP inválido.");
}
}
else {
limpa_formulário_cep();
}
};
Form that queries and receives the return from JS:
<input name="cep" id="cep" onblur="pesquisacep(this.value);" ng-model="contribuinte.cep" type="text"/>
<input name="estado" id="estado" ng-model="contribuinte.estado" charcase="uppercase" type="text"/>
<input name="cidade" id="cidade" ng-model="contribuinte.cidade" type="text"/>