Foros del Web » Programando para Internet » Javascript »

validación NIF,CIF, NIE

Estas en el tema de validación NIF,CIF, NIE en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 17/03/2008, 08:09
 
Fecha de Ingreso: noviembre-2007
Mensajes: 13
Antigüedad: 16 años, 5 meses
Puntos: 0
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 ****************************************************/
  #2 (permalink)  
Antiguo 17/03/2008, 08:51
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Re: validación NIF,CIF, NIE

????????

que es NIF, CIF y NIE?
  #3 (permalink)  
Antiguo 18/03/2008, 10:17
 
Fecha de Ingreso: noviembre-2007
Mensajes: 13
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: validación NIF,CIF, NIE

realmente falla en la validación del DNI
  #4 (permalink)  
Antiguo 28/04/2008, 08:43
 
Fecha de Ingreso: abril-2008
Mensajes: 4
Antigüedad: 16 años
Puntos: 0
Re: validación NIF,CIF, NIE

Cita:
Iniciado por stramin Ver Mensaje
????????

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)
  #5 (permalink)  
Antiguo 09/05/2008, 04:48
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años
Puntos: 5
Información 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.
  #6 (permalink)  
Antiguo 02/12/2008, 07:52
 
Fecha de Ingreso: abril-2007
Mensajes: 11
Antigüedad: 17 años
Puntos: 0
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.

Última edición por wmzt; 02/12/2008 a las 07:55 Razón: error
  #7 (permalink)  
Antiguo 17/03/2012, 11:53
 
Fecha de Ingreso: febrero-2012
Mensajes: 6
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: validación NIF,CIF, NIE

¡Gracias! Justo lo que me hacía falta.
  #8 (permalink)  
Antiguo 17/03/2012, 12:01
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años
Puntos: 5
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;
        }
    } 
__________________
$ DEITY = NULL
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




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