Jquery validate, some CPF numbers are not being accepted

Asked

Viewed 518 times

3

I am using Jquery validate + a "add-on" code for CPF validation, but some CPF’s are not being accepted, I have tested the numbers in other systems and it worked, but in my system is not rolling.

Follow the validation code.

function isCnpj(cnpj) {
    var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
    if (cnpj.length == 0) {
        return false;
    }

    cnpj = cnpj.replace(/\D+/g, '');
    digitos_iguais = 1;

    for (i = 0; i < cnpj.length - 1; i++)
        if (cnpj.charAt(i) != cnpj.charAt(i + 1)) {
            digitos_iguais = 0;
            break;
        }
    if (digitos_iguais)
        return false;

    tamanho = cnpj.length - 2;
    numeros = cnpj.substring(0,tamanho);
    digitos = cnpj.substring(tamanho);
    soma = 0;
    pos = tamanho - 7;
    for (i = tamanho; i >= 1; i--) {
        soma += numeros.charAt(tamanho - i) * pos--;
        if (pos < 2)
            pos = 9;
    }
    resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
    if (resultado != digitos.charAt(0)){
        return false;
    }
    tamanho = tamanho + 1;
    numeros = cnpj.substring(0,tamanho);
    soma = 0;
    pos = tamanho - 7;
    for (i = tamanho; i >= 1; i--) {
        soma += numeros.charAt(tamanho - i) * pos--;
        if (pos < 2)
            pos = 9;
    }

    resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;

    return (resultado == digitos.charAt(1));
}

function isCnpjFormatted(cnpj) {
    var validCNPJ = /\d{2,3}.\d{3}.\d{3}\/\d{4}-\d{2}/;
    return cnpj.match(validCNPJ);
}


function isCpf(cpf){
    exp = /\.|-/g;
    cpf = cpf.toString().replace(exp, "");
    var digitoDigitado = eval(cpf.charAt(9)+cpf.charAt(10));
    var soma1=0, soma2=0;
    var vlr =11;
    for(i=0;i<9;i++){
        soma1+=eval(cpf.charAt(i)*(vlr-1));
        soma2+=eval(cpf.charAt(i)*vlr);
        vlr--;
    }   
    soma1 = (((soma1*10)%11)==10 ? 0:((soma1*10)%11));
    soma2 = (((soma2+(2*soma1))*10)%11);

    if(cpf == "11111111111" || cpf == "22222222222" || cpf ==
            "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf ==
            "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf ==
            "99999999999" || cpf == "00000000000" ){
        var digitoGerado = null;
    }else{
        var digitoGerado = (soma1*10) + soma2;
    }

    if(digitoGerado != digitoDigitado){
       return false;
    }
    return true;
}
function isCpfFormatted(cpf) {
    var validCPF = /^\d{3}\.\d{3}\.\d{3}\-\d{2}$/;
    return cpf.match(validCPF);
}

(function($) {
    $.validator.addMethod("cpf", function(value, element, type) {
        if (value == "")
            return true;

        if ((type == 'format' || type == 'both') && !isCpfFormatted(value))
            return false;
        else
            return ((type == 'valid' || type == 'both')) ? isCpf(value) : true;

    }, function(type,element) {
        return (type == 'format' || (type == 'both' && !isCpfFormatted($(element).val()))) ?
                'Formato do CPF não é válido' : 'Por favor digite um CPF válido';
    });
    $.validator.addMethod("cnpj", function(value, element, type) {
        if (value == "")
            return true;

        if ((type == 'format' || type == 'both') && !isCnpjFormatted(value))
            return false;
        else
            return ((type == 'valid' || type == 'both')) ? isCnpj(value) : true;

    }, function(type,element) {
        return (type == 'format' || (type == 'both' && !isCnpjFormatted($(element).val()))) ?
                'Formato do CNPJ não é válido' : 'Por favor digite um CNPJ válido';
    });
})(jQuery);

I don’t know if you can help with the initial and final number of the CPF, but here it is: 653****-20

  • 2

    take a look at this reply can help you :)

  • @Brunno thank you very much, apparently it worked here in staging, I’ll send to QA to do more tests but I think it will work yes, Thank you.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.