0

Buen dia, Estoy haciendo un campo que me calcule un digito de verificacion después de un guin, lo que sucede es que cuando ingreso 15 digitos, borro el guion y le doy enter, que hago para validar exacto los 15 digitos y que no me aparezca eso, aca esta el codigo

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        <script>
            $(document).ready(function () {
                $('#nit').change(function (event) {
                    if(validarSiNumero($('#nit').val())) {
                        $('#nit').val(calcularDigitoVerificacion($('#nit' ).val()));
                    } else {
                        $('#nit').val('');
                        
                    }
                });
            });
 
            function validarSiNumero(numero){
                if(!/([1-15])/.test(numero)) {
                alert("Número Nit no valido, ingrese  números sin puntos ni comas");
                    return false;
                } else {
                    return true;
                }
            }       
            
        
            
            
            function calcularDigitoVerificacion(nit) {
                console.log("Entro a  la funcion");
                var sumatoria, digitoNit, longitudNit, DV;
                var arregloPrimos=[];               
                
                //procedimiento
                sumatoria = 0;
                digitoNit = 0;
                longitudNit = nit.length;
                arregloPrimos[1] = 3;
                arregloPrimos[2] = 7;
                arregloPrimos[3] = 13;
                arregloPrimos[4] = 17;
                arregloPrimos[5] = 19;
                arregloPrimos[6] = 23;
                arregloPrimos[7] = 29;
                arregloPrimos[8] = 37;
                arregloPrimos[9] = 41;
                arregloPrimos[10] = 43;
                arregloPrimos[11] = 47;
                arregloPrimos[12] = 53;
                arregloPrimos[13] = 59;
                arregloPrimos[14] = 67;
                arregloPrimos[15] = 71;
                
                console.log("Longitud Nit="+longitudNit);

                for (i = 0; i < longitudNit; i++)
                {
                    digitoNit = (nit.substr(i, 1));
                    sumatoria += (digitoNit * arregloPrimos[longitudNit - i]);
                    console.log("i="+i+" DigitoNit="+digitoNit+" Sumatoria="+sumatoria);
                }

                var modulo = sumatoria % 11;

                if (modulo > 1) {
                    DV = 11 - modulo;
                    return  nit+"-"+DV;
                } else {
                    DV = modulo;
                    return   nit+"-"+DV;
                }
            }
        </script>
    </head>
    <body>
        <label>Nit: </label>
        <input type="text" name"nit"   maxlength="15" size="15"  id="nit" 
        placeholder ="Escribe el Nit"  >
    </body>
</html>
Rodrigo Ramírez
  • 5,822
  • 4
  • 11
  • 32

0 Answers0