Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/03/2008, 08:09
domenecf
 
Fecha de Ingreso: noviembre-2007
Mensajes: 13
Antigüedad: 17 años, 1 mes
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 ****************************************************/