LimaJonas / magento-autocomplete-cep-br

Simples solução para auto-completar campos ao preencher o CEP no campo de Checkout
8 stars 4 forks source link

Campo CEP recuperado do carrinho, não ativa autopreenchimento. #4

Open rjslegall opened 3 years ago

rjslegall commented 3 years ago

Olá!

Encontramos um comportamento que pode fazer com que o cliente não utilize (perceba) a grande vantagem do autopreenchimento do módulo.

No carrinho de compras antes de ir para o checkout, o cliente faz o preenchimento do CEP. Quando o cliente segue para o checkout o campo CEP já está preenchido. Este campo é recuperado do carrinho de compras.

Desta forma, o cliente simplesmente continua a preencher os campos do endereço sem passar novamente pelo campo CEP. Portanto a função de foco "focusout" que ativa o calculo não é ativada.

Seria possível fazer algo para corrigir este comportamento? Talvez se o campo estiver preenchido, o calculo ser ativado automaticamente. Ou de alguma outra maneira?

Obrigado!

LimaJonas commented 3 years ago

nesse caso é um pouco complicado fazer com jquery/javascript. eu pensei em colocar um "onload" ou "(document).ready" para ativar a função e obter os dados da API. Mas muitas vezes o checkout demora para carregar e a função é ativada antes do input ser carregado, dando erro de undefined. Caso encontre uma outra solução, fique a vontade para editar.

rjslegall commented 3 years ago

Olá Jonas!

Posso tentar sua "onload" para ver o resultado. Poderia me dar um exemplo do "(documento) .ready" onde aplicar? Talvez com o Firecheckout funcione...

Outra coisa que tenho em mente seria desativar a função de recuperação do CEP do carrinho. Ou ainda melhor, aproveitar a recuperação do carrinho para fazer o autopreenchimento. Talvez alguma função que monitore o campo. Se estiver preenchido o autopreenchimento é feito...

O grande problema é que entendo muito pouco de js.

O que acha seria possível?

LimaJonas commented 3 years ago

Algo assim.. quando o documento iniciar, ele ativará a função

$(document).ready( function() {        
        getAddress();
}
function getAddress(){
    var cep = document.getElementsByName("postcode")[0].value;
    $.getJSON("https://brasilapi.com.br/api/cep/v1/"+ cep, function(data) {
    // ...

ou

window.onload = function() {
        getAddress();
};     

porém essas funções são ativadas antes do formulário ser carregado com o valor do cep. e essas modificações seriam feitas em checkoutAddress.js em view/frontend/web/js/