Foros del Web » Programando para Internet » Javascript »

Verificar NIF en formulario (no calcular)

Estas en el tema de Verificar NIF en formulario (no calcular) en el foro de Javascript en Foros del Web. Ya se que este tema esta tratado pero todos los scripts están enfocados a calcular la letra del NIF y no a verificar sobre el ...
  #1 (permalink)  
Antiguo 20/03/2003, 14:53
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 3 meses
Puntos: 1
[Resueto] Verificar NIF en formulario (no calcular)

Ya se que este tema esta tratado pero todos los scripts están enfocados a calcular la letra del NIF y no a verificar sobre el formulario el cuadro de texto donde escribimos el numero

Yo necesito que al cambiar el foco de textbox o al pulsar el submit me diga que el NIF no es valido.

Yo de ASP lo que sea , pero de Javascript, mmmmmm
Alguna ayudita???
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net

Última edición por KarlanKas; 23/03/2003 a las 05:07
  #2 (permalink)  
Antiguo 20/03/2003, 15:40
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
Hola maestro!

El script podría ser así:

Código PHP:
<html>
<
head>
<
script>

letra=["T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E","F"]

function 
comprobar(){
tecleado=document.forms[0].nif.value.toUpperCase();
caracteres=tecleado.length;
if(
caracteres<7){mal("NIF demasiado corto");return false;}
letrapuesta=tecleado.charAt(caracteres-1);
if(
letrapuesta==letrapuesta.toLowerCase()){mal("Falta la letra del NIF");return false;}
numero=tecleado.substring(0,caracteres-1);
if (
isNaN(numero)){mal("Número del NIF inválido");return false;}
if(
letrapuesta.toUpperCase()!=letra[numero%23]){mal("NIF Inválido");return false;}
document.forms[0].submit();
}

function 
mal(mensaje){
alert(mensaje);
document.forms[0].nif.value="";
document.forms[0].nif.focus();
}
</script>
</head>

<body style="font:bold 10px/10px verdana">

<form action="javascript:alert('Mandando!!')" name="formulario" id="formulario">

Introduce el NIF: <input type="text" name="nif" size="10" maxlength="10" style="font: normal 11px/10px verdana;"><input type="button" name="enviar" onclick="comprobar()" style=" heigth:12px;font: normal 10px/10px verdana;" value="ENVIAR!"><br>
<font style="font:bold 9px/9px verdana">(12345678X)</font>


</form>

</body> 

¿Es lo que querías?
__________________
Cómo escribir

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

Última edición por KarlanKas; 20/03/2003 a las 15:49
  #3 (permalink)  
Antiguo 20/03/2003, 19:02
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 3 meses
Puntos: 1
Gracias KarlanKas

Bien, parece que me vale, pero no puedo dejar la validacion en el SUBMIT, no me funciona, si modifico mi formulario que ahora esta asi:
<form method="POST" action="confirm.asp" name="formulario">
<input type="submit" onclick="comprobar()" value="Enviar" name="B1">


Y lo pongo asi:
<form action="index2.htm" name="formulario" id="formulario">
<input type="button" name="enviar" onclick="comprobar()" style=" heigth:12px;font: normal 10px/10px verdana;" value="ENVIAR!">

No hace nada de nada, como si no viese que es un formulario.

Mas bien necesitaria que la funcion se llamase al cambiar el foco del cuadro de texto llamado NIF al siguiente sin esperar a mandar el formulario.

Creo que seria con onblur, pero no estoy seguro.
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net

Última edición por maestro; 20/03/2003 a las 19:26
  #4 (permalink)  
Antiguo 21/03/2003, 03:26
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
Buenos días maestro!

Antes que nada comprueba qeu el campo del nif en tu formulario se llama nif ya uqe si no pasará lo que dices referente a que no hace nada.

Y respecto a que lo haga al perder el foco no te lo recomiendo porque es muy molesto el que te salten con un alert cuando estás a rellenándolo. Pero si así lo quieres no tienes más que poner:

(FÍJATE EN EL NOMBRE DEL CAMPO:ES nif, EN MINÚSCULAS ¿LO TIENES TÚ ASÍ?)

Código:
<input type="text" name="nif" size="10" maxlength="10" style="font: normal 11px/10px verdana;" onBlur="comprobar()">

Te sirve así?

Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #5 (permalink)  
Antiguo 21/03/2003, 05:39
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 3 meses
Puntos: 1
No me hace nada de nada pero pienso yo que puede ser porque en esa misma pagina tengo mas formularios (Uno de busqueda de productos)?

Habra que cambiar algo en document.forms[0].submit(); ?
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #6 (permalink)  
Antiguo 21/03/2003, 05:53
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
Claro!! Es eso!!

En el [0] debes poner el número de formulario que sea dentro de la página leyendo el código de arriba a abajo. Si es el segundo en todos los sitios donde ponga:

document.forms[0]....

debes poner :

document.forms[1]....

Y ya verás como te va!

Si ves que no va, cambia el forms[1] por el nombre del formulario.

Dime qué tal!

__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #7 (permalink)  
Antiguo 21/03/2003, 06:14
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
O mejor! Prueba esto:
Código PHP:
<html>
<
head>
<
script>

letra=["T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E","F"]

function 
comprobar(form){
tecleado=form.nif.value.toUpperCase();
caracteres=tecleado.length;
letrapuesta=tecleado.charAt(caracteres-1);
if(
letrapuesta==letrapuesta.toLowerCase()){mal("Falta la letra del NIF",form);return false;}
numero=tecleado.substring(0,caracteres-1);
if(
numero<100000){mal("NIF demasiado corto",form);return false;}
if (
isNaN(numero)){mal("Número del NIF inválido",form);return false;}
if(
letrapuesta.toUpperCase()!=letra[numero%23]){mal("NIF Inválido",form);return false;}
form.submit();
}

function 
mal(mensaje,form){
alert(mensaje);
form.nif.value="";
form.nif.focus();
}
</script>
</head>

<body style="font:bold 10px/10px verdana">
<form action=""></form>
<form action="javascript:alert('Mandando!!')" name="formulario" id="formulario">

Introduce el NIF: <input type="text" name="nif" size="10" maxlength="10" style="font: normal 11px/10px verdana;"><input type="button" name="enviar" onclick="comprobar(this.form)" style=" heigth:12px;font: normal 10px/10px verdana;" value="ENVIAR!"><br>
<font style="font:bold 9px/9px verdana">(12345678X)</font>


</form>

</body>
</html> 
Esto tiene que ir a las mil maravillas!
__________________
Cómo escribir

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

Última edición por KarlanKas; 21/03/2003 a las 06:22
  #8 (permalink)  
Antiguo 21/03/2003, 10:06
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 3 meses
Puntos: 1
Correcto, he conseguido que me funcione pero fijate alguna incosistencia que detecto.

Si pulso intro en cualquier campo del formulario (en este caso solo tenemos uno, pero piensa en el tipico formulario de nombre, direccion, nif, etc), este se envia, sin verificar la funcion javascript

Te estoy haciendo trabajar, eh?

PD: Acabo de ver otro post con el mismo problema que yo.
http://www.forosdelweb.com/showthrea...hreadid=122030
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #9 (permalink)  
Antiguo 21/03/2003, 10:39
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

Que bien que lo consiguieras, eh?

No entiendo... yo le doy al return en todas partes y en ningún momento manda el formulario...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
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




La zona horaria es GMT -6. Ahora son las 11:44.