Validate CEI (INSS specific register) with javascript or jquery

1

Good afternoon, I searched a lot for a function in javascript or jquery that validates the number of CEI typed in the form and did not find it. I have found only the rules for validation at this link: How to validate the CEI in ruby? .

From these rules I developed a javascript function to perform this validation, I performed some tests and it worked. Here's the code below for who needs it in the future.

/*
DATA: 08/05/2017
Valida o CEI digitado. 
Faz um cálculo matemático de acordo com o peso: 7,4,1,8,5,2,1,6,3,7,4.
@PARAM: @Obj = OBJ DO CAMPO.
*/
function validarCEI(Obj) {
    //Retira qualquer tipo de mascara e deixa apenas números.
    var cei = Obj.value.replace(/[^\d]+/g, '');

    if (cei == ""){

        return false;
    }

    if (cei.length != 12) {
        alert("CEI digitado é inválido!") ;
        return false;
    }

    var peso = "74185216374";
    var soma = 0;

    //Faz um for para multiplicar os números do CEI digitado pelos números do peso.
    //E somar o total de cada número multiplicado.
    for (i = 1; i < 12; i++){
        var fator = peso.substring(i - 1, i);
        var valor = cei.substring(i - 1, i);
        soma += (fator * valor);
    }
    //Pega o length do resultado da soma e desconta 2 para pegar somente a dezena.
    var len = soma.toString().length - 2;

    //pega a dezena
    var dezena = soma.toString().substring(len);

    //pega o algarismo da dezena
    var algdezena = dezena.toString().substring(0, 1);

    //pega o algarismo da unidade
    var unidade = parseInt(soma) - (parseInt((soma / 10)) * 10);

    //soma o algarismo da dezena com o algarismo da unidade.
    soma = parseInt(algdezena) + unidade;

    //pega o dígito (último número) do cei digitado.
    var digitoCEI = cei.substring(11);
    var digitoEncontrado = 10 - soma;

    if (digitoCEI != digitoEncontrado) {
        alert("CEI digitado é inválido!") ;
        return false;
    } else {
        return true;
    }
}
    
asked by anonymous 08.05.2017 / 22:14

0 answers