Retroceder   Foros del Web > Programación para sitios web > Javascript

Respuesta
 
Herramientas Desplegado
Antiguo 17-mar-2008, 08:09   #1 (permalink)
domenecf ha deshabilitado el karma
 
Fecha de Ingreso: noviembre-2007
Mensajes: 12
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 ****************************************************/
domenecf está desconectado   Responder Citando
Antiguo 17-mar-2008, 08:51   #2 (permalink)
stramin ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2008
Mensajes: 82
Re: validación NIF,CIF, NIE

????????

que es NIF, CIF y NIE?
stramin está desconectado   Responder Citando
Antiguo 18-mar-2008, 10:17   #3 (permalink)
domenecf ha deshabilitado el karma
 
Fecha de Ingreso: noviembre-2007
Mensajes: 12
Re: validación NIF,CIF, NIE

realmente falla en la validación del DNI
domenecf está desconectado   Responder Citando
Antiguo 28-abr-2008, 08:43   #4 (permalink)
wavelandian ha deshabilitado el karma
 
Fecha de Ingreso: abril-2008
Mensajes: 2
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)
wavelandian está desconectado   Responder Citando
Antiguo 09-may-2008, 04:48   #5 (permalink)
mgusdl tiene algunos puntos positivos de karma
 
Avatar de mgusdl
 
Fecha de Ingreso: abril-2007
Ubicación: Málaga, España
Mensajes: 154
Enviar un mensaje por Skype™ a mgusdl
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.
mgusdl está desconectado   Responder Citando
Respuesta
Calificación: Calificación de Tema: 2 votos, 2,50 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 17:02.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93