Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Javascript (http://www.forosdelweb.com/f13/)
-   -   validación NIF,CIF, NIE (http://www.forosdelweb.com/f13/validacion-nif-cif-nie-566765/)

domenecf 17/03/2008 08:09

validación NIF,CIF, NIE
 
Hola he estado utilizando este script para validar el NIF, CIF y NIE. Hasta hoy que me han colado lo siguiente como NIF: 5215815JT alguien podría indicarme donde está el error mil gracias.




paso el código
Código:

/-->
comprobar nif.......................................................................................
 
        if (campoVacio(document.form.nif.value))
        {
                alert("Ha d'omplir el camp NIF");
                form.nif.focus();
                    return false;
        }
       
        var a = document.form.nif;
        var temp=a.value.toUpperCase();
        var cadenadni="TRWAGMYFPDXBNJZSQVHLCKET";
        var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
        if (temp!==''){
                // No es un CIF ni un NIE, es un DNI
                if (!/^[ABCDEFGHKLMNPQSX]/.test(temp)){
                        posicion = a.value % 23; /*Resto de la division entre 23 es la posicion en la cadena*/
                        letra = cadenadni.charAt(posicion);
                        if (!/^[A-Za-z0-9]{9}$/.test(temp)){
                                //Es menos de 9 dígitos, añadimos la letra
                                alert('El DNI té menys de 9 dígits');
                                a.value=a.value+letra ;
                                form.nif.focus();
                                    return false;
                        }
                        else{
                                //Tiene los 9 dígitos, comprobamos si la letra esta bien
                                posicion = a.value.substring(8,0) % 23; /*Resto de la division entre 23 es la posicion en la cadena*/
                                letra = cadenadni.charAt(posicion);
                                var letradni=temp.charAt(8);
                                if (letra != letradni){
                                        alert("La Lletra del DNI no es correcta."+letradni+" es diferent a "+letra);
                                        form.nif.focus();
                                            return false;
                                }
                        }
                }else{
                        //Es un NIE o un CIF
                        if (/^[X]/.test(temp)){ //Es un NIE
                                var temp1=temp.substr(1,8);
                                posicion = temp1 % 23; /*Resto de la division entre 23 es la posicion en la cadena*/
                                letra = cadenadni.substring(posicion,posicion+1);
                                if (!/^[A-Za-z0-9]{9}$/.test(temp)){ //Es menos de 9 dígitos, añadimos la letra
                                        alert('Te menys de 9 dígits en el NIE');
                                        a.value=a.value+letra ;
                                        form.nif.focus();
                                            return false;
                                }else{ //Tiene los 9 dígitos, comprobamos si la letra esta bien
                                        var temp1=temp.substr(1,7);
                                        posicion = temp1 % 23; /*Resto de la division entre 23 es la posicion en la cadena*/
                                        letra = cadenadni.charAt(posicion);
                                        var letranie=temp.charAt(8);
                                        if (letra != letranie){
                                                alert("La lletra del NIE no es correcta."+letranie+" es diferent a "+letra);
                                                form.nif.focus();
                                                    return false;                       
                                        }
                                }
                        }else{ //Es un CIF
                                var cifcontrol = 0;
                                for( i = 2; i <= 6; i += 2 ){
                                        cifcontrol = cifcontrol + v1[ parseInt(temp.substr(i-1,1)) ];
                                        cifcontrol = cifcontrol + parseInt(temp.substr(i,1));
                                };
                                cifcontrol = cifcontrol + v1[ parseInt(temp.substr(7,1)) ];
                                cifcontrol = (10 - ( cifcontrol % 10));

                                if (!/^[A-Za-z0-9]{9}$/.test(temp)){ //Es menos de 9 dígitos, añadimos el dígito de control
                                        alert('El Cif té menys de 9 dígits');
                                        form.nif.focus();
                                            return false;                       
                                        a.value=a.value+cifcontrol;
                                }else{
                                        if (cifcontrol!=temp.substr(8,1)){
                                                alert ('El dígit de control del CIF no es correcte.El correcte es '+cifcontrol);
                                                form.nif.focus();
                                                    return false;                       
                                        }
                                }
                        }
                }
        }
 /********************************** FIN COMPROBACION NIF,DNI,CIF ****************************************************/


stramin 17/03/2008 08:51

Re: validación NIF,CIF, NIE
 
????????

que es NIF, CIF y NIE?

domenecf 18/03/2008 10:17

Re: validación NIF,CIF, NIE
 
realmente falla en la validación del DNI

wavelandian 28/04/2008 08:43

Re: validación NIF,CIF, NIE
 
Cita:

Iniciado por stramin (Mensaje 2325973)
????????

que es NIF, CIF y NIE?

Del sistema de identificación tributaria utilizada en España:
  • NIF: Número de Identificación Fiscal (para personas físicas)
  • CIF: Código de identificación Fiscal (para personas jurídicas)
  • NIE: Número de Identificación de Extranjeros

Mas info en wikipedia:
- NIF: http://es.wikipedia.org/wiki/NIF
- CIF: http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal
- NIE: http://es.wikipedia.org/wiki/NIE
(interesantes vinculos al final de los artículos, incluidos utilidades y códigos de validación)

mgusdl 09/05/2008 04:48

Re: validación NIF,CIF, NIE
 
Buenas, en la consultora donde trabajo he tenido que implementar validaciones de este tipo en la aplicación web.
Aunque la validación mediante JavaScript es fácil de saltarsela (usando FireBug, por ejemplo), para los usuarios no tocapelotas viene bien dar un aviso antes de enviar la información.
Siempre es acosejable validar más tarde al recibir los datos.

Bueno, aquí te pongo las funciones para validar CIF, NIF/NIE y NSS, la primera no funciona sin la segunda.

Código:

function checkCIF(cf)
        {
        var i = temp = 0;
        var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
        cf = cf.toUpperCase();
        if (checkNIF(cf)) return true;
        else if (!/^[A-Za-z0-9]{9}$/.test(cf)) return false
        else if (!/^[ABCDEFGHKLMNPQS]/.test(cf)) return false
        else
                {
                for(i=2; i<=6; i+=2)
                        {
                        temp += v1[parseInt(cf.substr(i-1, 1))];
                        temp += parseInt(cf.substr(i, 1));
                        }
                temp = temp + v1[parseInt(cf.substr(7,1))];
                temp = (10 - ( temp % 10));
                if(temp == 10 && (cf.charAt(cf.length-1) == 'J' || cf.charAt(cf.length-1) == 0)) return true;
                else if (cf.charAt(cf.length-1) == temp || cf.charAt(cf.length-1) == String.fromCharCode(64 + temp)) return true;
                else return false;
                }
        }

function checkNIF(nif) {
        if (!nif) return false;
        var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
        if (nif.length != 9) return false;
        else {
                letra = nif.substr(8, 1); letra = letra.toUpperCase();
                dni = nif.substr(0, 8);
                dni = dni.toUpperCase(); dni = dni.replace('X','0');
                dni -= parseInt(dni/23) * 23;
                //alert (letras.charAt(dni) + " - " + letra);
                if (letras.charAt(dni) != letra) return false;
                else return true;
                }
        }

function checkNSS(nss) {
        if (!nss) return false;
        if (nss.length != 11 && nss.length != 12) return false;
        if (nss.substr(2, 1) == 0) nss = "" + nss.substr(0, 2) + nss.substr(3, nss.length-1);
        if (mod(nss.substr(0, nss.length-2), 97) == nss.substr(nss.length-2, 2)) return true;
        else return false;
        }

La forma de funcionamiento es sencilla: le mandamos el valor y nos devuelve true si es bueno y false en caso contrario.

Espero que le sirva a más de uno.

wmzt 02/12/2008 07:52

Respuesta: validación NIF,CIF, NIE
 
Hola,

Te recuerdo que la validación para el NIE cambió desde hace algunos meses. Antes únicamente iniciaba con letra X, pero ahora el NIE / NIF de personas extranjeras también inicia con la letra Y.

Te dejo un enlace donde puedes ver el código para crear un validador DNI/NIE/NIF actualizado:

www.web2.0facil.com/2008/12/02/validar-nuevo-nienif-con-letra-y-inicial/

por favor, ponedse al día!! es una vergüenza que a estas alturas una gran parte de los usuarios no puedan validar sus números de identificación y hagamos perder clientes a nuestros clientes!!

Saludos.

akifranki 17/03/2012 11:53

Respuesta: validación NIF,CIF, NIE
 
¡Gracias! Justo lo que me hacía falta.

mgusdl 17/03/2012 12:01

Respuesta: validación NIF,CIF, NIE
 
Como dice wmzt, la función cambia poco para ajustarse a la nueva normatica

Se sustituye
X->0 (como antes)
Y->1
Z->2

Código PHP:

function checkNIF(nif)
    {
    if (!
nif) return false;
    var 
letras 'TRWAGMYFPDXBNJZSQVHLCKE';
    if (
nif.length != 9) return false;
    else {
        
letra nif.substr(81); letra letra.toUpperCase();
        
dni nif.substr(08);
        
dni dni.toUpperCase(); dni dni.replace('X','0'); dni dni.replace('Y','1'); dni dni.replace('Z','2');
        
dni -= parseInt(dni/23) * 23;
        if (
letras.charAt(dni) != letra) return false;
        else return 
true;
        }
    } 



La zona horaria es GMT -6. Ahora son las 04:17.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2025, Jelsoft Enterprises Ltd.