Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Minhas validações não aparecem no console

Fiz o código igual ao da instrutora mas a validação não está aparecendo no console quando tiro o foco do campo. Simplesmente não aparece nada no console. Se alguém puder me ajudar agradeço.

Seguem meus códigos:

ValidaCPF.js

export default function ehUmCPF(campo){
    const cpf = campo.value.replace(/\.|-/g, "")
                            //O método replace recebe dois parâmetros, 
                            //o primeiro é o que desejamos substituir
                            //o segundo é pelo que desejamos substituir
    if(validaNumerosRepetidos(cpf) || validaPrimeiroDigito(cpf) || validaSegundoDigito(cpf)){
        console.log("Este cPF não existe")
    } else {
        console.log("Este CPF existe")
    }

    console.log(cpf)
}

function validaNumerosRepetidos(cpf) {
    const numerosRepetidos = [
        "00000000000",
        "11111111111",
        "22222222222",
        "33333333333",
        "44444444444",
        "55555555555",
        "66666666666",
        "77777777777",
        "88888888888",
        "99999999999"
    ]

    return numerosRepetidos.includes(cpf);
}

function validaPrimeiroDigito(cpf) {
    let soma = 0;
    let multiplicador = 10;

    for(let tamanho = 0; tamanho < 9; tamanho++) {
        soma += cpf[tamanho] * multiplicador;
        multiplicador--;
    }

    soma = (soma * 10) % 11;

    if (soma == 10 || soma == 11) {
        soma = 0;
    }

    return soma != cpf[9];
}

function validaSegundoDigito(cpf) {
    let soma = 0;
    let multiplicador = 11;

    for(let tamanho = 0; tamanho < 10; tamanho++) {
        soma += cpf[tamanho] * multiplicador;
        multiplicador--;
    }

    soma = (soma * 10) % 11;

    if (soma == 10 || soma == 11) {
        soma = 0;
    }

    return soma != cpf[10];
}

Script.js

import ehUmCPF from "./valida-cpf.js";

const camposDoFormulario = document.querySelectorAll("[required]");

camposDoFormulario.forEach((campo) => {
    campo.addEventListener("blur", () => verificaCampo(campo));
                            //evento de retirar o cursor/foco do input
})

function verificaCampo(campo) {
    if (campo.name == cpf && campo.value.length >= 11) {
        ehUmCPF(campo);
    }

}
3 respostas

Me parece que o problea está sendo na busca dos elementos pelo required. Fiz um busca direta do campo CPF pelo ID e consegui usar o "blur" nele. Mas por falta de conhecimento não consegui fazer a função valida CPF funcionar, apenas ativei um console.log.

Continuo esperando por ajuda.

const campoCpf = document.getElementById("cpf");
campoCpf.addEventListener("blur", (campo) => {
    console.log("Tirei o mouse do CPF")
    verificaCampo(campo)

O console.log do Tirei o mouse do CPF funcionou, mas o verificaCampo continua sem funcionar.

Tentei de uma outra forma, com e sem o .value e continua sem funcionar.

const campoCpf = document.getElementById("cpf");

campoCpf.addEventListener("blur", () => {
    console.log("Tirei o mouse do CPF")
    verificaCampo(campoCpf.value)
})
solução!

o projeto final funcionou normalmente mas não descobri o porque do erro.