Foros del Web » Programando para Internet » Javascript »

Validar nif/cif

Estas en el tema de Validar nif/cif en el foro de Javascript en Foros del Web. he estado buscando un script para validar el nif/cif, pero no encontre nada me podeis ayudar?¿ Un Saludo...
  #1 (permalink)  
Antiguo 08/09/2004, 02:31
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
Validar nif/cif

he estado buscando un script para validar el nif/cif, pero no encontre nada me podeis ayudar?¿


Un Saludo
  #2 (permalink)  
Antiguo 08/09/2004, 04:33
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
En la página de carlitos, un habitual de estos foros (www.carlitos.com.es) tienes un muy buen ejemplo.

Saludos
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 08/09/2004 a las 04:37
  #3 (permalink)  
Antiguo 08/09/2004, 08:22
Avatar de Carlitos
Usuario no validado
 
Fecha de Ingreso: mayo-2001
Ubicación: Zaragoza
Mensajes: 1.304
Antigüedad: 22 años, 11 meses
Puntos: 25
Hola Dinasen, Karlankas

El ejemplo de mi página, lo que hace es calcular el nif, pero no validarlo. A ver si lo modifico un poco y lo publico aquí.

Un saludete.

Última edición por Carlitos; 08/09/2004 a las 08:23 Razón: Por faltas de ortografía.
  #4 (permalink)  
Antiguo 08/09/2004, 09:14
Avatar de Carlitos
Usuario no validado
 
Fecha de Ingreso: mayo-2001
Ubicación: Zaragoza
Mensajes: 1.304
Antigüedad: 22 años, 11 meses
Puntos: 25
Hola otra vez.

Bueno, aquí está.
Código:
<script>
/*******************************
 Validación del nif. Por Carlitos. [email protected]
 Si usas este script, deja intactas estas líneas (créditos). Vale?
 También te agradecería un e-mail con tus comentarios.
*******************************/

function validar()
{
abc=document.formulario.nif.value
dni=abc.substring(0,abc.length-1)
let=abc.charAt(abc.length-1)
if (!isNaN(let))
 {
  alert('Falta la letra')
  document.formulario.nif.focus()
  return false
 }
else
 {
  cadena="TRWAGMYFPDXBNJZSQVHLCKET"
  posicion = dni % 23
  letra = cadena.substring(posicion,posicion+1)
  if (letra!=let.toUpperCase())
   {
    alert("Nif no válido")
    document.formulario.nif.focus()
    return false
   }
 }
alert("Nif válido")
}

</script>
</head>
<h1>Validación del Nif</h1>
<form name="formulario">
NIF: <input type="text" name="nif" size="10">
<input type="button" value="Validar" onclick="validar()"> 
</form>
El nif lo debes poner todo seguido. Es decir sin puntos, ni comas, ni guiones, etc... Por ejemplo "123456789X"
Es un poco rudimentario, pero creo que puede servirte.

Un saludo.
  #5 (permalink)  
Antiguo 08/09/2004, 12:03
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
Muchas garcias sirvio a la perfeccion

Un Saludo a los dos y gracias
  #6 (permalink)  
Antiguo 16/09/2004, 09:24
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
Carlitos ahora me piden que tambien sirva para cif es decir con las letra delente, he estado mirando pero no consigo que me funcione, me puedes echaer una mano please

Muchas gracia spor tu tiempo



Un Saludo
  #7 (permalink)  
Antiguo 16/09/2004, 09:58
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Eso te pasa por conseguir tan fácilmente un comprobador de NIF!

Hace unos meses descubrí en una página como se comprobaba el CIF. por lo visto la última cifra es de control, y para hallarla se debe calcular algo con las cifras pares y algo con las impares... No me acuerdo bien, pero te pongo el código que hice basándome en esa página para comprobar si está bien.

Aquí te fundo los dos códigos a ver que te parece!
Código HTML:
<html>
<head>
	<title>Untitled</title>
	
	<script>
	function comprobarcif(cif){
	mal=false;
letras="ABCDEFGHKLMNPQS"
caracteres=[];

for(a=0;a<cif.length;a++){
caracteres[a]=cif.charAt(a);
}
if(letras.indexOf(caracteres[0])==-1){
esto=cif;
validar(esto);
return false;
}
resultadoImpares=0;
for(a=1;a<8;a=a+2){
numero=caracteres[a]*2;
numero=parseInt(numero/10)+numero%10;
resultadoImpares+=numero
}

resultadoImpares=parseInt(resultadoImpares/10)+resultadoImpares%10;

numeroPar=0;
for(a=2;a<8;a=a+2){
numeroPar+=parseInt(caracteres[a]);
}
total=resultadoImpares+numeroPar;
total=11-(total%10)+1;
if(total!=caracteres[8]){mal=true;}
if(mal){
pepe=alert("Parece ser que el C.I.F. no es correcto.\nPor favor corrijalo.");
document.introducir.CIF.focus();return false
}}
/*******************************
 Validación del nif. Por Carlitos. [email][email protected][/email]
 Si usas este script, deja intactas estas líneas (créditos). Vale?
 También te agradecería un e-mail con tus comentarios.
*******************************/

function validar(abc)
{
dni=abc.substring(0,abc.length-1)
let=abc.charAt(abc.length-1)
if (!isNaN(let))
 {
  alert('Falta la letra')
  document.formulario.nif.focus()
  return false
 }
else
 {
  cadena="TRWAGMYFPDXBNJZSQVHLCKET"
  posicion = dni % 23
  letra = cadena.substring(posicion,posicion+1)
  if (letra!=let.toUpperCase())
   {
    alert("Nif no válido")
    document.formulario.nif.focus()
    return false
   }
 }
alert("Nif válido")
}


	</script>
</head>

<body>
<form name="introducir">
NIF/CIF: <input type="text" name="CIF" onblur="comprobarcif(this.value)">
</form>


</body>
</html> 
Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #8 (permalink)  
Antiguo 16/09/2004, 10:02
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
La página:

http://personal.telefonica.terra.es/...script/cif.htm

leí la explicación y hice mi código... más chapucerillo que el que aquí...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #9 (permalink)  
Antiguo 16/09/2004, 10:14
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
mama mia ahora si que me volvi loko al de carlitos solo le hace falta que compruebe si la letra esta delante por que la formula de la letra es la misma

ademas va dentro de una funcion que valida todo y meter esto ahora ahi me resulta imposible para mis conocimientos

no habria otra formas mas facil?¿

Un Saludo
  #10 (permalink)  
Antiguo 16/09/2004, 10:41
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
El algoritmo de validación del CIF es totalmente distinto al del NIF.

Se puede hacer que si se pone una letra delante no lo valide, pero pueden estar metiéndote un CIF falso.

la letra de delante del CIF no es de validación, es informativa:

- Sociedad Anónima.
B - Sociedad de responsabilidad limitada.
C - Sociedad colectiva.
D - Sociedad comanditaria.
E - Comunidad de bienes.
F - Sociedad cooperativa.
G - Asociación.
H - Comunidad de propietarios.
K - Formato antiguo.
L - Formato antiguo.
M - Formato antiguo.
N - Formato antiguo.
P - Corporación local.
Q - Organismo autónomo.
S - Organo de la administración.

Qué hacemos entonces?
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #11 (permalink)  
Antiguo 16/09/2004, 10:51
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
mmmmmm pero si pro ejemplo el script de carlitos lo usas con un cif imaginemos

a123456789 da error pero si lo pones 123456789a va bien entonces supongo qeu habra una serie de parametros mas pro que si no como se genera el numero del cif?¿

Un Saludo
  #12 (permalink)  
Antiguo 16/09/2004, 10:58
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Mira el enlace que te he puesto.
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #13 (permalink)  
Antiguo 16/09/2004, 11:00
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
si ya lo vi..perdon


interare meterle mano pro mi cuenta a la fusion que me diste a ver que saco


Muchas gracias de corazon

Un Saludo
  #14 (permalink)  
Antiguo 24/09/2004, 10:07
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
KarlanKas
ya consegui ponerlo en el mi script pero la parte tuya debe de tener algun error por que siempre me devuelve que esta mal y llevo dos dias intentando averiguarlo perono lo consegui...

me puedas ayudar¿¿

Un Saludo
  #15 (permalink)  
Antiguo 24/09/2004, 12:39
Avatar de Carlitos
Usuario no validado
 
Fecha de Ingreso: mayo-2001
Ubicación: Zaragoza
Mensajes: 1.304
Antigüedad: 22 años, 11 meses
Puntos: 25
No había vuelto a ver este mensaje.

Interesante.

Bueno, aquí dejo el código que he hecho yo. Gracias a la documentación aportada por KarlanKas. No sabía cómo se calculaba el cif.
Código:
	
<script>
/*******************************
 Validación del nif/nif. Por Carlitos. [email protected]
 Si usas este script, deja intactas estas líneas (créditos). Vale?
 También te agradecería un e-mail con tus comentarios.
 Idea original de validación de cif de KarlanKas
*******************************/



function cif(cif)
{
par = 0
non = 0
letras="ABCDEFGHKLMNPQS"
let=cif.charAt(0)

if (!isNaN(let))
  {
  nif=cif
  validar(nif)
  return false
  }

if (cif.length!=9)
  {
  alert('El Cif debe tener 9 dígitos')
  document.formulario.nif.focus()
  return false
  }

if (letras.indexOf(let.toUpperCase())==-1)
  {
  alert("El comienzo del Cif no es válido")
  document.formulario.nif.focus()
  return false
  }

for (zz=2;zz<8;zz+=2)
  {
  par = par+parseInt(cif.charAt(zz))
  }

for (zz=1;zz<9;zz+=2)
  {
  nn = 2*parseInt(cif.charAt(zz))
  if (nn > 9) nn = 1+(nn-10)
  non = non+nn
}

parcial = par + non

control = (10 - ( parcial % 10))

if (control!=cif.charAt(8))
  {
  alert("El Cif no es válido")
  document.formulario.nif.focus()
  return false
  }
alert("El Cif es válido")
}

function validar(abc)
{
dni=abc.substring(0,abc.length-1)
let=abc.charAt(abc.length-1)
if (!isNaN(let))
 {
  alert('Falta la letra')
  document.formulario.nif.focus()
  return false
 }
else
 {
  cadena="TRWAGMYFPDXBNJZSQVHLCKET"
  posicion = dni % 23
  letra = cadena.substring(posicion,posicion+1)
  if (letra!=let.toUpperCase())
   {
    alert("Nif no válido")
    document.formulario.nif.focus()
    return false
   }
 }
alert("Nif válido")
}


</script>

<body>
<form name="formulario">
NIF/CIF: <input type="text" name="nif" onblur="cif(this.value)"> 
</form>

</body>
Pruébalo y me cuentas.

Última edición por Carlitos; 24/09/2004 a las 12:45 Razón: Porque estoy un poco tonto y debería usar más la vista preliminar para evitar fallos.
  #16 (permalink)  
Antiguo 26/09/2004, 08:44
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
Ok muchas gracias lo pruebo y ya te cuento


Un Saludo
  #17 (permalink)  
Antiguo 27/09/2004, 13:10
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
Carlitos funciono perfectmente, muchas gracias a los dos por vuestro tiempo

Un Saludo
  #18 (permalink)  
Antiguo 13/01/2006, 18:10
 
Fecha de Ingreso: mayo-2004
Ubicación: España
Mensajes: 38
Antigüedad: 19 años, 11 meses
Puntos: 0
Hola veo que hace mucho tiempo que no se trata este tema, pero es que he añadido este script para verificar el CIF/NIF en la entrada a mi base de datos y resulta que el primer CIF que meto (el CIF de mi empresa) me da error y está comprobado que es correcto.

He revisado el codigo y la formula por la que se calcula el dígito de control del CIF. El link anterior no existe, yo lo encontré en http://www.aulambra.com/ver.asp?id=139.

El caso es que segun este metodo en mi caso C=30 en el script de Carlitos parcial = 30, esto hace que control =10 -0 (o 9-0+1) asi que control es 10 y claro el digito de control del CIF no puede ser 10 ya que es de una sola cifra, en la realidad el digito de control de mi CIF es 0.

Esto se solucionaría haciendo un right a control antes de comprobar si es igual al 8º digito del CIF pero he visto que no existe esa funcion en javascript.

Como se podría solucionar esto?

Gracias
  #19 (permalink)  
Antiguo 14/01/2006, 04:57
Avatar de Carlitos
Usuario no validado
 
Fecha de Ingreso: mayo-2001
Ubicación: Zaragoza
Mensajes: 1.304
Antigüedad: 22 años, 11 meses
Puntos: 25
Hola.

Añade lo que está en negrita.
Código:
...
control = (10 - ( parcial % 10))

if (control==10) control=0

if (control!=cif.charAt(8))
...
  #20 (permalink)  
Antiguo 15/01/2006, 14:00
 
Fecha de Ingreso: mayo-2004
Ubicación: España
Mensajes: 38
Antigüedad: 19 años, 11 meses
Puntos: 0
Todo OK, a veces nos empeñamos en buscarle las tres patas al gato cuando hay otra forma mas facil, pero claro a altas horas de la madrugada no lo ves.

Muchas gracias
  #21 (permalink)  
Antiguo 16/01/2007, 06:16
 
Fecha de Ingreso: abril-2003
Ubicación: Malaga
Mensajes: 176
Antigüedad: 21 años
Puntos: 1
Re: Validar nif/cif

Hola amigos:

Lo primero felicitar a carlitos por ese pedazo de script hecho. Alguien sabe cual es el codigo de verificación de un NIE (Numero Identidad Extranjeria
). Aunque no estoy muy puesto en javascript me gustaria intentar incorporarlo para tener el script lo mas completo posible y dejarlo ya a dispòsicion de todo el mundo. Creo que es la misma verificacion que el nif pero con la X, estoy en lo cierto?
  #22 (permalink)  
Antiguo 16/01/2007, 06:24
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Re: Validar nif/cif

Estás en lo cierto!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #23 (permalink)  
Antiguo 16/01/2007, 06:46
 
Fecha de Ingreso: abril-2003
Ubicación: Malaga
Mensajes: 176
Antigüedad: 21 años
Puntos: 1
Re: Validar nif/cif

Cita:
Iniciado por KarlanKas Ver Mensaje
Estás en lo cierto!
Pero que no tengo muy claro, la x sustituye a algun numero y hay que darle algun valor o simplemente se hace con el resto de los numeros (no se que formato tiene un nie)
  #24 (permalink)  
Antiguo 21/01/2008, 08:41
Avatar de kvoloj  
Fecha de Ingreso: agosto-2003
Mensajes: 124
Antigüedad: 20 años, 8 meses
Puntos: 1
Exclamación Re: Validar nif/cif

Hola Carlitos:

He tratado de quitar la validación del nif, ya que solo necesito el cif y me da error.
El script funciona tal cual, pero cuando modifico algo no funciona.

Me podrías ayudar a variar tu código para que sólo se valide el cif?

Muchas Gracias

Koldo





Cita:
Iniciado por Carlitos Ver Mensaje
No había vuelto a ver este mensaje.

Interesante.

Bueno, aquí dejo el código que he hecho yo. Gracias a la documentación aportada por KarlanKas. No sabía cómo se calculaba el cif.
Código:
	
<script>
/*******************************
 Validación del nif/nif. Por Carlitos. [email protected]
 Si usas este script, deja intactas estas líneas (créditos). Vale?
 También te agradecería un e-mail con tus comentarios.
 Idea original de validación de cif de KarlanKas
*******************************/



function cif(cif)
{
par = 0
non = 0
letras="ABCDEFGHKLMNPQS"
let=cif.charAt(0)

if (!isNaN(let))
  {
  nif=cif
  validar(nif)
  return false
  }

if (cif.length!=9)
  {
  alert('El Cif debe tener 9 dígitos')
  document.formulario.nif.focus()
  return false
  }

if (letras.indexOf(let.toUpperCase())==-1)
  {
  alert("El comienzo del Cif no es válido")
  document.formulario.nif.focus()
  return false
  }

for (zz=2;zz<8;zz+=2)
  {
  par = par+parseInt(cif.charAt(zz))
  }

for (zz=1;zz<9;zz+=2)
  {
  nn = 2*parseInt(cif.charAt(zz))
  if (nn > 9) nn = 1+(nn-10)
  non = non+nn
}

parcial = par + non

control = (10 - ( parcial % 10))

if (control!=cif.charAt(8))
  {
  alert("El Cif no es válido")
  document.formulario.nif.focus()
  return false
  }
alert("El Cif es válido")
}

function validar(abc)
{
dni=abc.substring(0,abc.length-1)
let=abc.charAt(abc.length-1)
if (!isNaN(let))
 {
  alert('Falta la letra')
  document.formulario.nif.focus()
  return false
 }
else
 {
  cadena="TRWAGMYFPDXBNJZSQVHLCKET"
  posicion = dni % 23
  letra = cadena.substring(posicion,posicion+1)
  if (letra!=let.toUpperCase())
   {
    alert("Nif no válido")
    document.formulario.nif.focus()
    return false
   }
 }
alert("Nif válido")
}


</script>

<body>
<form name="formulario">
NIF/CIF: <input type="text" name="nif" onblur="cif(this.value)"> 
</form>

</body>
Pruébalo y me cuentas.
  #25 (permalink)  
Antiguo 03/11/2008, 18:34
 
Fecha de Ingreso: noviembre-2007
Mensajes: 154
Antigüedad: 16 años, 5 meses
Puntos: 2
Pregunta Respuesta: Validar nif/cif

Buenas noches:
Estoy empezando con javascript a validar formularios. El tema es que tenía ya una función para validar el formulario, antes de enviarlo al fichero PHP receptor.

La duda, es que no tengo claro cómo utilizar este script dentro de mi función y el firebug me decía algo raro, del 'onblur'.

Les adjunto el código de la función que tengo para validar, por si me pueden echar una mano.

Código HTML:
function formValidaBuy() {
	var formulario2 = document.f_compra;
	var nombre = document.f_compra.nombre.value;
	var apellidos = document.f_compra.apellidos.value;
	var mail = document.f_compra.mail.value;
	var empresa = document.f_compra.empresa.value;
	var telefono = document.f_compra.telefono.value;
	var direccion = document.f_compra.direccion.value;
	var nif = document.f_compra.nif.value;
	var letras = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E', 'T'];
		
	// se calculan los checkbox marcados

	var cont = 0;
	var total = formulario2.f_chk;
	
	for (var x=0; x < total.length; x++) {
		if (total[x].checked) {
			cont = cont + 1;	
		}
	}

//	alert ("Se han seleccionado " + cont + " programas")

	// se realizan las comprobaciones
	
	if(nombre.length == 0 || nombre == '' || /^\s+$/.test(nombre)) {
		alert("Tiene que escribir su nombre")
		nombre.focus();
		return false;
		
	} else if(apellidos.length == 0 || apellidos == '' || /^\s+$/.test(apellidos)) {
		alert("Tiene que escribir su/s apellido/s")
		apellidos.focus();
		return false;
		
	} else if(!(/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i.test(mail))) {
		alert("Debe introducir una dirección de mail válida")
		mail.focus();		
		return false;
		
	} else if(empresa.length == 0 || empresa == '' || /^\s+$/.test(empresa)) {
		alert("Tiene que escribir el nombre de su empresa")
		empresa.focus();
		return false;

	} else if( nif == '' || nif.length == 0) {
		alert("Compruebe si ha introducido el NIF")
		nif.focus();
  	return false;
/*
	}else if (!(/^\d{8}[A-Z]$/.test(nif)) || (nif.charAt(8) != letras[(nif.substring(0, 8))%23]) || ) {
		alert("Compruebe si ha introducido el NIF correcto")
		nif.focus();
		return false;
*/
	} else if( !(/^\d{9}$/.test(telefono))) {
		alert("Compruebe que ha introducido correctamente el teléfono")
		telefono.focus();
		return false;
		
	} else if(cont < 1) {
		alert("Debe seleccionar al menos uno de los programas")
		return false;
	}
	
	alert("Muchas gracias por enviar el formulario")
	formulario2.submit();
}
Por otra parte, como pueden ver, tengo un for, para ver si se selecciona algún check y cuántos se han seleccionado, pero necesitaría saber si se puede hacer este 'conteo', con un getElementByType o algo así, porque debería cambiar el nombre del check de 'f_chk' a 'f_chk[]', para luego el tratamiento en PHP, o cambiar el nombre, sin que no se vuelva loco javascript.

El formulario es el siguiente:

Código HTML:
<p class="titulo">Compras</p>

<!-- <form id="compras" action="index.php?pag=9&contacto=envio&tipo=1" method="post" name="f_compra" onsubmit="return formValidaBuy(this);"> -->
<form id="compras" action="index.php?pag=9&contacto=envio&tipo=1" method="post" name="f_compra">	
	<fieldset>
    	<legend>Información de contacto</legend>
        <table align="center" width="90%">
        	<tr>
            	<td>
        			<label for="nombre">Nombre:</label>
        			<input type="text" id="nombre" name="nombre" /><br />
        		</td>
                <td>
                	<label for="empresa">Empresa:</label>
                    <input type="text" id="empresa" name="empresa" />
                </td>

			</tr>                
			<tr>
            	<td>              
                    <label for="apellidos">Apellidos:</label>
        			<input type="text" id="apellidos" name="apellidos" /><br />         				        	
				</td>
                <td>
                	<label for="nif">CIF / NIF:</label>
        			<input type="text" id="nif" name="nif" /><br />
                </td>
			</tr>
            <tr>
            	<td>                                    
			        <label for="mail">Email:</label>
			        <input type="text" id="mail" name="mail" />
				</td>
				<td>
	                <label for="direccion">Direccion:</label>
        			<input type="text" id="direccion" name="direccion" /><br />
                </td>
			</tr>                
			<tr>                
                <td colspan="2">
                	<label for="telefono">Teléfono:</label>
        			<input type="text" id="telefono" name="telefono" /><br />
                </td>
			</tr>
		</table>                                             
    </fieldset>
	<fieldset>
    	<legend>Productos</legend>
        <p>Seleccione los programas que le interesen:</p>
        <p>
          <input type="checkbox" value="cyewin" id="cyewin" name="f_chk" />&nbsp;CyEWin<br />
          <input type="checkbox" value="fyvwin" id="fyvwin" name="f_chk" />&nbsp;FyVWin<br />
          <input type="checkbox" value="nyswin" id="nyswin" name="f_chk" />&nbsp;NySWin<br />
        </p>
  </fieldset>
    
<!--    <input type="submit" value="enviar" /> -->
		<input type="button" onClick="javascript:formValidaBuy(this)" name="Submit" value="Enviar">
    <input type="reset" value="borrar" />
</form> 


Muchas gracias.
  #26 (permalink)  
Antiguo 15/02/2012, 15:39
 
Fecha de Ingreso: septiembre-2008
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Validar nif/cif

Cita:
Iniciado por KarlanKas Ver Mensaje
Eso te pasa por conseguir tan fácilmente un comprobador de NIF!

Hace unos meses descubrí en una página como se comprobaba el CIF. por lo visto la última cifra es de control, y para hallarla se debe calcular algo con las cifras pares y algo con las impares... No me acuerdo bien, pero te pongo el código que hice basándome en esa página para comprobar si está bien.

Aquí te fundo los dos códigos a ver que te parece!
Código HTML:
<html>
<head>
	<title>Untitled</title>
	
	<script>
	function comprobarcif(cif){
	mal=false;
letras="ABCDEFGHKLMNPQS"
caracteres=[];

for(a=0;a<cif.length;a++){
caracteres[a]=cif.charAt(a);
}
if(letras.indexOf(caracteres[0])==-1){
esto=cif;
validar(esto);
return false;
}
resultadoImpares=0;
for(a=1;a<8;a=a+2){
numero=caracteres[a]*2;
numero=parseInt(numero/10)+numero%10;
resultadoImpares+=numero
}

resultadoImpares=parseInt(resultadoImpares/10)+resultadoImpares%10;

numeroPar=0;
for(a=2;a<8;a=a+2){
numeroPar+=parseInt(caracteres[a]);
}
total=resultadoImpares+numeroPar;
total=11-(total%10)+1;
if(total!=caracteres[8]){mal=true;}
if(mal){
pepe=alert("Parece ser que el C.I.F. no es correcto.\nPor favor corrijalo.");
document.introducir.CIF.focus();return false
}}
/*******************************
 Validación del nif. Por Carlitos. [noparse][email][email protected][/email][/noparse]
 Si usas este script, deja intactas estas líneas (créditos). Vale?
 También te agradecería un e-mail con tus comentarios.
*******************************/

function validar(abc)
{
dni=abc.substring(0,abc.length-1)
let=abc.charAt(abc.length-1)
if (!isNaN(let))
 {
  alert('Falta la letra')
  document.formulario.nif.focus()
  return false
 }
else
 {
  cadena="TRWAGMYFPDXBNJZSQVHLCKET"
  posicion = dni % 23
  letra = cadena.substring(posicion,posicion+1)
  if (letra!=let.toUpperCase())
   {
    alert("Nif no válido")
    document.formulario.nif.focus()
    return false
   }
 }
alert("Nif válido")
}


	</script>
</head>

<body>
<form name="introducir">
NIF/CIF: <input type="text" name="CIF" onblur="comprobarcif(this.value)">
</form>


</body>
</html> 
Un saludo!
Este script sólo valida el cif de una empresa,no valida el resto de cif correspondientes a otro tipo de entidades:asociaciones,fundaciones,organimos públicos,etc. Sería un buen aporte completarlo.Gracias.A mí me vendría muy bien y supongo a otros muchos.
  #27 (permalink)  
Antiguo 31/10/2012, 20:40
 
Fecha de Ingreso: octubre-2012
Mensajes: 1
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Validar nif/cif

Hola !! me hacia falta algo que validara en un mismo campo el NIF / CIF / NIE . Rebuscando , alfin consegui mi propio script tomando recortes ( soy un poco beginner ) Asique nada , soy nuevo y quiero poner mi granitop de arena AHI VA !!!!!!!! TESTENLO ami me en un principio me va del hujo!!!
Código:


Código Javascript:
Ver original
  1. function nifcifnie(entrada){
  2.    
  3.     var filternif = /^([0-9]){8}([TRWAGMYFPDXBNJZSQVHLCKE])$/;
  4.     var filtercif = /^([ABCDEFGHJKLMNPQSV])([0-9]){7}([0-9A-J])$/;
  5.     var filternie = /^([XYZ])([0-9]){7}([TRWAGMYFPDXBNJZSQVHLCKE])$/;
  6.    
  7.          ////// SE COMPRUEBA CON LOS FILTER QUE TIPO DE DOCUMENTO ES FACILITADO /////
  8.          
  9.          if(filternif.test(entrada)){     ///// SI ES NIF
  10.            
  11.             var dni         = parseInt(entrada.substring(0,8));
  12.             var letranif = entrada.charAt(8);
  13.             var rangnif = 'TRWAGMYFPDXBNJZSQVHLCKE';
  14.             var seldni      = dni%23;
  15.             var pru = rangnif.charAt(seldni);
  16.            
  17.                                        
  18.             if(pru!=letranif){
  19.                 alert('Error al verificar el NIF');
  20.                 return;
  21.             }
  22.        
  23.         }else if(filtercif.test(entrada)){   /////// SI ES CIF
  24.            
  25.                 var par = 0;
  26.                 var imp = 0;
  27.                 var letras="ABCDEFGHKLMNPQS";
  28.                 var let=entrada.charAt(0);
  29.                
  30.                 for (c=2;c<8;c+=2){
  31.                      
  32.                   var    par = par+parseInt(entrada.charAt(c))
  33.                      
  34.                       }
  35.  
  36.                 for (c=1;c<9;c+=2){
  37.                      
  38.                 var f = 2*parseInt(entrada.charAt(c))
  39.                       if (f > 9) f = 1+(f-10)
  40.                 var imp = imp+f;
  41.                 }
  42.  
  43.                 var parc = par + imp
  44.  
  45.                 control = (10 - ( parc % 10))
  46.  
  47.                 if (control!=entrada.charAt(8)){
  48.                      
  49.                       alert("Error al verificar el CIF")
  50.                      
  51.                       return;                  
  52.                       }
  53.                    
  54.                    
  55.                        
  56.        
  57.         }else if(filternie.test(entrada)){            //////// SI ES NIE ////////
  58.            
  59.              if(entrada.substring(0,1)=='X'){
  60.                  
  61.                                  var preletra ='0';
  62.              }
  63.              if(entrada.substring(0,1)=='Y'){
  64.                                  
  65.                                  var preletra ='1';
  66.                          }
  67.              if(entrada.substring(0,1)=='Z'){
  68.                                  
  69.                                  var preletra ='2';
  70.                          }
  71.            
  72.                           var nie      = parseInt(preletra+entrada.substr(1,8));
  73.                          var letranie = entrada.charAt(8);
  74.                          var rangonie = 'TRWAGMYFPDXBNJZSQVHLCKE';
  75.                          var letranieveri = rangonie.charAt(nie % 23);
  76.  
  77.                          if(letranieveri != letranie){
  78.                              alert('Error al verificar el NIE');
  79.                              return;
  80.                          }
  81.                          
  82.  
  83.            
  84.         }else{
  85.             alert('Los datos NIF/CIF/NIE carecen de un formato correcto');
  86.             return;
  87.         }
  88.  
  89. }

Última edición por lute_htw; 31/10/2012 a las 20:46
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.
Tema Cerrado

SíEste tema le ha gustado a 3 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 20:24.