2
respostas

Valida CPF

Minha função valida CPF está dando erro... Conseguem me ajudar? (Dá a mensagem: O CPF digitado não é válido.)

No javascript:

function validaCPF ( input ) {
    const cpfFormatado = input.value.replace( /\D/g, '' );

    console.log(cpfFormatado);
    let mensagem = '';

    if ( !checaCPFRepetido( cpfFormatado ) || !checaEstruturaCPF( cpfFormatado ) ) {
        mensagem = 'O CPF digitado não é válido.'
    }

    input.setCustomValidity( mensagem )
}

function checaCPFRepetido ( cpf ) {
    const valoresRepetidos = [
        '00000000000',
        '11111111111',
        '22222222222',
        '33333333333',
        '44444444444',
        '55555555555',
        '66666666666',
        '77777777777',
        '88888888888',
        '99999999999'
    ]
    let cpfValido = true

    valoresRepetidos.forEach( valor => {
        if ( valor == cpf ) {
            cpfValido = false
        }
    } )

    return cpfValido
}

function checaEstruturaCPF ( cpf ) {
    const multiplicador = 10

    return checaDigitoVerificador( cpf, multiplicador )
}

function checaDigitoVerificador ( cpf, multiplicador ) {
    if ( multiplicador >= 12 ) {
        return true
    }

    let multiplicadorInicial = multiplicador
    let soma = 0
    const cpfSemDigitos = cpf.substr( 0, multiplicador - 1 ).split( '' )
    const digitoVerificador = cpf.charAt( multiplicador - 1 )
    for ( let contador = 0; multiplicadorInicial > 1; multiplicadorInicial-- ) {
        soma = soma + cpfSemDigitos[ contador ] * multiplicadorInicial
        contador++
    }

    if ( digitoVerificador == confirmaDigito( soma ) ) {
        return checaDigitoVerificador( cpf, multiplicador + 1 )
    }

    return false
}

function confirmaDigito ( soma ) {
    return 11 - ( soma % 11 )
}

No html:

<div class="input-container"> <!-- cpf -->
     <input name="cpf" id="cpf" class="input" type="text" placeholder="CPF" maxlength="14" data-type="cpf" required>
     <label class="input-label"  for="cpf">CPF</label>
     <span class="input-mensagem-erro" data-span="cpf">Este campo não está válido</span>
</div>
2 respostas

Fala Laura, tudo bem?

Pode ser que não esteja sendo mandado o cpf para a função validaCPF, mas para que possamos ver melhor sobre o que pode ter ocorrido, poderia nos enviar o código JS por completo de app.js e validacao.js e se possível verificar o que retorna quando damos o console na variável cpfFormatado?

Aguardo o seu retorno :D

Olá, tudo bem? Obrigada pelo retorno!

Eu vou te mandar o código e aí dá uma olhada, não consgui encontrar o erro de jeito nenhum... Eu coloco o meu cpf e não vai... Já o do meu marido vai... Fiquei sem enteder.

https://gist.github.com/lauracarlottadev/641c4b513969c2fb68c7818ea28039b5