1
resposta

Meu campo de CPF esta dando inválido

Não estou localizando o que deixei passar... mas todo CPF que coloco esta dando inválido

No HTML

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

No validacao.js

function validaCPF(input) {
    const cpfFormatado = input.value.replace(/\D/g, '')
    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)
}
1 resposta

Ola acredito que o primeiro passo pode ser apagar a mensagem de erro que esta dentro do span:

                <span class="input-mensagem-erro">Este campo não está válido</span>
                <span class="input-mensagem-erro"></span>

Se puder posta o código completo aqui pra testarmos a validação em si.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software