he estado buscando un script para validar el nif/cif, pero no encontre nada me podeis ayudar?¿
Un Saludo
| ||||
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 |
| ||||
Hola otra vez. Bueno, aquí está.
Código:
El nif lo debes poner todo seguido. Es decir sin puntos, ni comas, ni guiones, etc... Por ejemplo "123456789X"<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> Es un poco rudimentario, pero creo que puede servirte. Un saludo. |
| ||||
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>
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| ||||
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. |
| ||||
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 |
| ||||
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. |
| ||||
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 |
| ||||
Mira el enlace que te he puesto.
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| ||||
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 |
| ||||
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:
Pruébalo y me cuentas. <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> Ú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. |
| |||
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 |
| |||
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? |
| ||||
Re: Validar nif/cif Estás en lo cierto!
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| |||
Re: Validar nif/cif 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) |
| ||||
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 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:
Pruébalo y me cuentas.<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> |
| |||
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(); } 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" /> CyEWin<br /> <input type="checkbox" value="fyvwin" id="fyvwin" name="f_chk" /> FyVWin<br /> <input type="checkbox" value="nyswin" id="nyswin" name="f_chk" /> 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. |
| |||
Respuesta: Validar nif/cif Cita: 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.
Iniciado por KarlanKas 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> |
| |||
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:
Última edición por lute_htw; 31/10/2012 a las 20:46 |