fix: corrige achados da revisao final (DDI idempotente, mascara DDI 12/13 digitos, status DV, validacao no load, autofill dispara mascaras)
Endereca 5 achados da revisao final de branch: - Important #1: normalizar_telefone_com_ddi agora e idempotente (nao duplica 55 independente do tamanho) - Important #2: mascara de telefone detecta DDI colado por tamanho total (12/13 digitos), nao mais so pelo campo especifico - Minor #3: buscarCnpj pula lookup na Receita quando DV do CNPJ e invalido, preservando a mensagem de erro - Minor #4: detectarEValidarDocumento roda uma vez no carregamento da pagina - Minor #5: autofill da Receita dispara evento input para acionar as mascaras de UF/CEP/TELEFONE Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
eec7ce21b5
commit
dea9dc4401
@@ -125,13 +125,15 @@
|
||||
}
|
||||
|
||||
$cnpj.addEventListener('input', detectarEValidarDocumento);
|
||||
detectarEValidarDocumento();
|
||||
|
||||
function aplicarMascaraTelefone(elemento, digitosAposDdd) {
|
||||
elemento.addEventListener('input', function () {
|
||||
var digitos = elemento.value.replace(/\D/g, '');
|
||||
// Se veio com DDI 55 colado (12-13 dígitos totais), usa só o resto.
|
||||
var totalComDdi = 2 + digitosAposDdd; // DDI(2) + DDD(2) já contado em digitosAposDdd
|
||||
if (digitos.length >= totalComDdi && digitos.slice(0, 2) === '55') {
|
||||
// DDI 55 colado: detecta por tamanho total (12 ou 13 dígitos), não
|
||||
// pelo tamanho esperado do campo específico — um número de 12
|
||||
// dígitos colado no campo de celular ainda deve ter o 55 removido.
|
||||
if ((digitos.length === 12 || digitos.length === 13) && digitos.slice(0, 2) === '55') {
|
||||
digitos = digitos.slice(2);
|
||||
}
|
||||
digitos = digitos.slice(0, digitosAposDdd);
|
||||
@@ -181,6 +183,7 @@
|
||||
async function buscarCnpj() {
|
||||
var limpo = normalizarCnpj($cnpj.value);
|
||||
if (limpo.length !== 14) return;
|
||||
if (limpo.length === 14 && !validarDvCnpj(limpo)) return;
|
||||
|
||||
if ($status) $status.textContent = 'Buscando dados do CNPJ...';
|
||||
|
||||
@@ -196,6 +199,7 @@
|
||||
var $input = document.getElementById(campo);
|
||||
if ($input && !$input.value && corpo.dados[campo]) {
|
||||
$input.value = corpo.dados[campo];
|
||||
$input.dispatchEvent(new Event('input'));
|
||||
preencheu = true;
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user