Comunidad de diseño web y desarrollo en internet online

Error en mi aplicacion javascript, necesitaria ayuda.

Citar            
MensajeEscrito el 01 Ene 2010 01:51 pm
Buenos día y feliz año.

Como he dicho en el tema, os dejo mi codigo html + javascript de una aplicacion para mi web personal, basicamente consiste en un formulario que le introduces una serie de datos y tiene que validarlos. Los dos primeros no me hacen bien del todo la validación, en el nombre no debo de meter numeros (esta funciona, de momento) y en los años tengo que estar dentro de los parametros 10 y 80 años (funciona a veces), pero los dos ultimos, la fecha de nacimiento y codigo postal (no funcionan), la verdad que estos son los complicaos y quebraderos de cabeza que llevo, en la fecha de nacimiento tiene que comprar que ese año debe ser posterior a 1910 y tambien no al dia de hoy. Y el codigo postal la validacion es que empiece por 23 y tenga los 6 digital correspondientes.

Sin nada mas, espero vuestra ayuda y gracias de antemano.


Este es el codigo -->

<!-- <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">-->
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<head>
<title>Ejercicio3</title>
<script type="text/javaScript">

var date= new Date();
var year=date.getFullYear();

window.onload = function () {
document.getElementById("boton").onclick=comprobaciones;
}

function comprobaciones () {
if (document.getElementById("nombre").value == !isNaN){
alert ("Nombre introducido Incorrecto");
document.getElementById("edad").value=" ";
}

if ((parseInt(document.getElementById("edad").value) < 10) && (parseInt(document.getElementById("edad").value) > 80)){
alert ("Años introducidos Incorrectos, deben estar entre 10 y 80");
document.getElementById("edad").value=0;
}

if ((parseInt(document.getElementById("fecha").value) >= 1910) && (parseInt(document.getElementById("fecha").value) <= year)){
alert ("Años introducidos Incorrectos, deben estar entre 1910 y el año actual");
document.getElementById("edad").value=0;
}

var cp=document.getElementById("codigo").value;
var comp=cp.substring(0,2);

if (comp!=23){
alert ("Codigo postal introducido, incorrecto debe de empezar por 23 y/o debe de contener 6 digitos");
document.getElementById("edad").value=0;
}

}

</script>
</head>
<body>
<center>
<h1> FORMULARIO DE DATOS </H1>
<hr>
<br>
<br>
<form name="formulario" id="formulario">
<p id="parrafo1">Escribe tu Nombre: <input id="nombre" type="text"></p>
<p id="parrafo2">Escribe tu Edad: <input id="edad" type="text"></p>
<p id="parrafo3">Escribe tu Fecha de Nacimiento: <input id="fecha" type="text"></p>
<p id="parrafo4">Escribe tu Codigo Postal: <input id="postal" type="text"></p>
<input type="button" id="boton" value="ENVIAR DATOS">
<input type="reset" id="reset" value="BORRAR DATOS">
</form>
</center>
</body>
</html>

Por games

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Ene 2010 08:55 pm
Bueno, hasta aquí llegué:

Código Javascript :

function comprobaciones() {
  if (document.getElementById("nombre").value == !isNaN){
  alert ("Nombre introducido Incorrecto");
  document.getElementById("edad").value="";
  }

  var edad = document.getElementById("edad").value;
  var esnumero = /^[1-8][0-9]$/;
  if (!esnumero.test(edad)) { alert("La edad ingresada no es número"); return; }
  
  edad = parseInt(edad);
  
  if ((edad < 10) || (edad > 80)) { alert("La edad debe ser mayor a 10 y menor a 80"); return; }
...
}


Lo de la fecha no me queda claro ¿esperas que el usuario solo introduzca el año de nacimiento o la fecha completa?.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 01 Ene 2010 09:03 pm
Debe de introducir su fecha completa de nacimiento, y de hay averiguar si el año que introduce esta dentro de los parametros de validez que indico. Gracias por queerer ayudarme.

Por games

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Ene 2010 11:41 am
Bien. ¿En qué formato esperas recibir la fecha?, puede ser dd/mm/aaaa o mm-dd-aaaa o cómo?

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Ene 2010 12:09 pm
Mientras tanto, aquí tienes la validación del código postal:

Código Javascript :

  var postal = document.getElementById("postal").value;
  var espostal = /^23[0-9]{4}$/;
  if (!espostal.test(postal)) { alert("Código postal no válido"); return; }

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Ene 2010 01:06 pm
Pues DriverOp, el formato seria el de dd/mm/yyyy

1 Saludo.

Por games

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Ene 2010 02:53 pm
Pues sería:

Código Javascript :

var fechanac = document.getElementById("fecha").value;
var esfecha = /^[0-3]?[0-9](\/)[0-1]?[0-9](\/)[0-9]{4}$/;
if (!esfecha.test(fechanac)) { alert("Formato de fecha no válido."); }


Eso valida el formato, la validación de la fecha te la dejo a ti :)

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Ene 2010 04:29 pm
Hola de nuevo, he introducido sus modificaciones y he realizado la comprobacion de la fecha (que supongo que es asi), y me da un error en esa comprobacion, ¿podrias indicarme por que? es de la unica manera que se me ocurre que puede ser asi. Le muestro el codigo entero. Gracias.

Código Java :

<!-- <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">-->
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<head>
<title>Formulario Validación ZG</title>
<script type="text/javaScript">

var d=new Date();
var ano_actual=date.getFullYear();

window.onload = function () {
   document.getElementById("boton").onclick=comprobaciones;
}

function comprobaciones () {
   if (document.getElementById("nombre").value == !isNaN){
      alert ("Nombre introducido Incorrecto");
      document.getElementById("nombre").value=" ";
   }

   if ((parseInt(document.getElementById("edad").value) < 10) && (parseInt(document.getElementById("edad").value) > 80)){
      alert ("Años introducidos Incorrectos, deben estar entre 10 y 80");
      document.getElementById("edad").value=0;
   }

   var fechanac = document.getElementById("fecha").value; 
   var esfecha = /^[0-3]?[0-9](\/)[0-1]?[0-9](\/)[0-9]{4}$/;

   if (!esfecha.test(fechanac))&&(fechanac.getYear()<=ano_actual)){ 
      alert ("Formato de fecha introducido no válido");
      document.getElementById("fecha").value=0; 
   }

   var postal = document.getElementById("postal").value; 
   var espostal = /^23[0-9]{4}$/; 

   if (!espostal.test(postal)) { 
      alert ("Código postal no válido, asegure de que empieza por 23 y/o son 6 caracteres numericos");
      document.getElementById("postal").value=0;
   }

}

</script>
</head>
<body>
<center>
<h1> FORMULARIO DE DATOS </H1>
<hr>
<br>
<br>
<form name="formulario" id="formulario">
   <p id="parrafo1">Escribe tu Nombre:  <input id="nombre" type="text"></p>
   <p id="parrafo2">Escribe tu Edad:  <input id="edad" type="text"></p>
   <p id="parrafo3">Escribe tu Fecha de Nacimiento:  <input id="fecha" type="text"></p>
   <p id="parrafo4">Escribe tu Codigo Postal:  <input id="postal" type="text"></p>
   <input type="button" id="boton" value="ENVIAR DATOS">
   <input type="reset" id="reset" value="BORRAR DATOS">
</form>
</center>
</body>
</html>

Por games

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Ene 2010 08:51 pm
¿Y qué es "getYear"? :S

Fechanac es la cadena introducida por el usuario, no es un tipo de dato especial o algo así.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Ene 2010 09:28 pm
Pues con getYear, querria que me devolviese el año que introduce por teclado el usuario y asi separarlo, por ello manejaba esa opcion. Entonces que tendria hacerlo con un split y asi separalo?? Espero su respuesta.

Por games

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Ene 2010 12:33 am
Yep...

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.