¿Eres nuevo? ¡Lee el FAQ y ponte al día!
1k visitas

Validación automática de CIF, NIF y NIE según la última legislación (jQuery)

Javascript
  1. // Recibe el 'id' del elemento HTML para proceder a la validación, si es correcta devuelve 'true' y sino saca un alert y devuelve 'false'
  2. //Requiere del framework jQuery
  3. function valida_nif_cif_nie(a) {
  4.     var resul = true;
  5.     var temp = trim(jQuery('#'+a).val()).toUpperCase();
  6.     var cadenadni = "TRWAGMYFPDXBNJZSQVHLCKE";
  7.     if (temp !== '') {
  8.         //algoritmo para comprobacion de codigos tipo CIF
  9.         suma = parseInt(temp[2]) + parseInt(temp[4]) + parseInt(temp[6]);
  10.         for (i = 1; i < 8; i += 2) {
  11.             temp1 = 2 * parseInt(temp[i]);
  12.             temp1 += '';
  13.             temp1 = temp1.substring(0,1);
  14.             temp2 = 2 * parseInt(temp[i]);
  15.             temp2 += '';
  16.             temp2 = temp2.substring(1,2);
  17.             if (temp2 == '') {
  18.                 temp2 = '0';
  19.             }
  20.             suma += (parseInt(temp1) + parseInt(temp2));
  21.         }
  22.         suma += '';
  23.         n = 10 - parseInt(suma.substring(suma.length-1, suma.length));
  24.         //si no tiene un formato valido devuelve error
  25.         if ((!/^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$/.test(temp) && !/^[T]{1}[A-Z0-9]{8}$/.test(temp)) && !/^[0-9]{8}[A-Z]{1}$/.test(temp)) {
  26.             if ((temp.length == 9) && (/^[0-9]{9}$/.test(temp))) {
  27.                 var posicion = temp.substring(8,0) % 23;
  28.                 var letra = cadenadni.charAt(posicion);
  29.                 var letradni = temp.charAt(8);
  30.                 alert("La letra del NIF no es correcta. " + letradni + " es diferente a " + letra);
  31.                 jQuery('#'+a).val(temp.substr(0,8) + letra);
  32.                 resul = false;
  33.             } else if (temp.length == 8) {
  34.                 if (/^[0-9]{1}/.test(temp)) {
  35.                     var posicion = temp.substring(8,0) % 23;
  36.                     var letra = cadenadni.charAt(posicion);
  37.                     var tipo = 'NIF';
  38.                 } else if (/^[KLM]{1}/.test(temp)) {
  39.                     var letra = String.fromCharCode(64 + n);
  40.                     var tipo = 'NIF';
  41.                 } else if (/^[ABCDEFGHJNPQRSUVW]{1}/.test(temp)) {
  42.                     var letra = String.fromCharCode(64 + n);
  43.                     var tipo = 'CIF';
  44.                 } else if (/^[T]{1}/.test(temp)) {
  45.                     var letra = String.fromCharCode(64 + n);
  46.                     var tipo = 'NIE';
  47.                 } else if (/^[XYZ]{1}/.test(temp)) {
  48.                     var pos = str_replace(['X', 'Y', 'Z'], ['0','1','2'], temp).substring(0, 8) % 23;
  49.                     var letra = cadenadni.substring(pos, pos + 1);
  50.                     var tipo = 'NIE';
  51.                 }
  52.                 if (letra !== '') {
  53.                     alert("Añadido la letra del " + tipo + ": " + letra);
  54.                     jQuery('#'+a).val(temp + letra);
  55.                 } else {
  56.                     alert ("El CIF/NIF/NIE tiene que tener 9 caracteres");
  57.                     jQuery('#'+a).val(temp);
  58.                 }
  59.                 resul = false;
  60.             } else if (temp.length < 8) {
  61.                 alert ("El CIF/NIF/NIE tiene que tener 9 caracteres");
  62.                 jQuery('#'+a).val(temp);
  63.                 resul = false;
  64.             } else {
  65.                 alert ("CIF/NIF/NIE incorrecto");
  66.                 jQuery('#'+a).val(temp);
  67.                 resul = false;
  68.             }
  69.         }
  70.         //comprobacion de NIFs estandar
  71.         else if (/^[0-9]{8}[A-Z]{1}$/.test(temp)) {
  72.             var posicion = temp.substring(8,0) % 23;
  73.             var letra = cadenadni.charAt(posicion);
  74.             var letradni = temp.charAt(8);
  75.             if (letra == letradni) {
  76.                 return 1;
  77.             } else if (letra != letradni) {
  78.                 alert("La letra del NIF no es correcta. " + letradni + " es diferente a " + letra);
  79.                 jQuery('#'+a).val(temp.substr(0,8) + letra);
  80.                 resul = false;
  81.             } else {
  82.                 alert ("NIF incorrecto");
  83.                 jQuery('#'+a).val(temp);
  84.                 resul = false;
  85.             }
  86.         }
  87.         //comprobacion de NIFs especiales (se calculan como CIFs)
  88.         else if (/^[KLM]{1}/.test(temp)) {
  89.             if (temp[8] == String.fromCharCode(64 + n)) {
  90.                 return 1;
  91.             } else if (temp[8] != String.fromCharCode(64 + n)) {
  92.                 alert("La letra del NIF no es correcta. " + temp[8] + " es diferente a " + String.fromCharCode(64 + n));
  93.                 jQuery('#'+a).val(temp.substr(0,8) + String.fromCharCode(64 + n));
  94.                 resul = false;
  95.             } else {
  96.                 alert ("NIF incorrecto");
  97.                 jQuery('#'+a).val(temp);
  98.                 resul = false;
  99.             }
  100.         }
  101.         //comprobacion de CIFs
  102.         else if (/^[ABCDEFGHJNPQRSUVW]{1}/.test(temp)) {
  103.             var temp_n = n + '';
  104.             if (temp[8] == String.fromCharCode(64 + n) || temp[8] == parseInt(temp_n.substring(temp_n.length-1, temp_n.length))) {
  105.                 return 2;
  106.             } else if (temp[8] != String.fromCharCode(64 + n)) {
  107.                 alert("La letra del CIF no es correcta. " + temp[8] + " es diferente a " + String.fromCharCode(64 + n));
  108.                 jQuery('#'+a).val(temp.substr(0,8) + String.fromCharCode(64 + n));
  109.                 resul = false;
  110.             } else if (temp[8] != parseInt(temp_n.substring(temp_n.length-1, temp_n.length))) {
  111.                 alert("La letra del CIF no es correcta. " + temp[8] + " es diferente a " + parseInt(temp_n.substring(temp_n.length-1, temp_n.length)));
  112.                 jQuery('#'+a).val(temp.substr(0,8) + parseInt(temp_n.substring(temp_n.length-1, temp_n.length)));
  113.                 resul = false;
  114.             } else {
  115.                 alert ("CIF incorrecto");
  116.                 jQuery('#'+a).val(temp);
  117.                 resul = false;
  118.             }
  119.         }
  120.         //comprobacion de NIEs
  121.         //T
  122.         else if (/^[T]{1}/.test(temp)) {
  123.             if (temp[8] == /^[T]{1}[A-Z0-9]{8}$/.test(temp)) {
  124.                 return 3;
  125.             } else if (temp[8] != /^[T]{1}[A-Z0-9]{8}$/.test(temp)) {
  126.                 var letra = String.fromCharCode(64 + n);
  127.                 var letranie = temp.charAt(8);
  128.                 if (letra != letranie) {
  129.                     alert("La letra del NIE no es correcta. " + letranie + " es diferente a " + letra);
  130.                     jQuery('#'+a).val(temp.substr(0,8) + letra);
  131.                     resul = false;
  132.                 } else {
  133.                     alert ("NIE incorrecto");
  134.                     jQuery('#'+a).val(temp);
  135.                     resul = false;
  136.                 }
  137.             }
  138.         }
  139.         //XYZ
  140.         else if (/^[XYZ]{1}/.test(temp)) {
  141.             var pos = str_replace(['X', 'Y', 'Z'], ['0','1','2'], temp).substring(0, 8) % 23;
  142.             var letra = cadenadni.substring(pos, pos + 1);
  143.             var letranie = temp.charAt(8);
  144.             if (letranie == letra) {
  145.                 return 3;
  146.             } else if (letranie != letra) {
  147.                 alert("La letra del NIE no es correcta. " + letranie + " es diferente a " + letra);
  148.                 jQuery('#'+a).val(temp.substr(0,8) + letra);
  149.                 resul = false;
  150.             } else {
  151.                 alert ("NIE incorrecto");
  152.                 jQuery('#'+a).val(temp);
  153.                 resul = false;
  154.             }
  155.         }
  156.     }
  157.     if (!resul) {      
  158.         jQuery('#'+a).focus();
  159.         return resul;
  160.     }
  161. }
  162.  

­

Etiquetas: JavaScript cif nif nie JavaScript jQuery validación

Insertar: