Foros del Web » Programando para Internet » Javascript »

Validar fecha introducida mediante form

Estas en el tema de Validar fecha introducida mediante form en el foro de Javascript en Foros del Web. Tengo el siguiente formulario: Código: <form name="formulario" action="respuesta.cfm" method="post"> fecha: <input type="text" name="fecha"> <a href="Javascript :envia();"> </form> Como debo crear la funcion envia() para que ...
  #1 (permalink)  
Antiguo 12/03/2002, 12:15
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 4 meses
Puntos: 17
Validar fecha introducida mediante form

Tengo el siguiente formulario:

Código:
<form name="formulario" action="respuesta.cfm" method="post">
fecha: <input type="text" name="fecha">
<a href="Javascript:envia();">
</form>
Como debo crear la funcion envia() para que compruebe que la fecha es correcta y esta en formato dd/mm/yyyy? He probado muchos scripts que hay en webs, pero todos me fallan :(

Muchas gracias.

Cain
http://www.ilimit.com/towers

  #2 (permalink)  
Antiguo 12/03/2002, 17:04
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Re: Validar fecha introducida mediante form

Prueba con esto:
Código:
<html>
 <head>
  <script language="JavaScript">

   function esDigito(sChr){
    var sCod = sChr.charCodeAt(0);
    return ((sCod > 47) && (sCod < 58));
   }

   function valSep(oTxt){
    var bOk = false;
    bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(5) == "-"));
    bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/"));
    return bOk;
   }

   function finMes(oTxt){
    var nMes = parseInt(oTxt.value.substr(3, 2), 10);
    var nRes = 0;
    switch (nMes){
     case  1: nRes = 31; break;
     case  2: nRes = 29; break;
     case  3: nRes = 31; break;
     case  4: nRes = 30; break;
     case  5: nRes = 31; break;
     case  6: nRes = 30; break;
     case  7: nRes = 31; break;
     case  8: nRes = 31; break;
     case  9: nRes = 30; break;
     case 10: nRes = 31; break;
     case 11: nRes = 30; break;
     case 12: nRes = 31; break;
    }
    return nRes;
   }

   function valDia(oTxt){
    var bOk = false;
    var nDia = parseInt(oTxt.value.substr(0, 2), 10);
    bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
    return bOk;
   }

   function valMes(oTxt){
    var bOk = false;
    var nMes = parseInt(oTxt.value.substr(3, 2), 10);
    bOk = bOk || ((nMes >= 1) && (nMes <= 12));
    return bOk;
   }

   function valAno(oTxt){
    var bOk = true;
    var nAno = oTxt.value.substr(6);
    bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
    if (bOk){
     for (var i = 0; i < nAno.length; i++){
      bOk = bOk && esDigito(nAno.charAt(i));
     }
    }
    return bOk;
   }
continua...
  #3 (permalink)  
Antiguo 12/03/2002, 17:06
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Re: Validar fecha introducida mediante form

...continuación

Código:
   function valFecha(oTxt){
    var bOk = true;
    if (oTxt.value != ""){
     bOk = bOk && (valAno(oTxt));
     bOk = bOk && (valMes(oTxt));
     bOk = bOk && (valDia(oTxt));
     bOk = bOk && (valSep(oTxt));
     if (!bOk){
      alert("Fecha inválida");
      oTxt.value = "";
      oTxt.focus();
     }
    }
   }

  </script>
 </head>
 <body>
  <form name="f1">
   <p>
    Escriba cualquier cosa: 
    <input type="text" size="20" name="xxx">
   </p>
   <p>
    Escriba una fecha (dd/mm/aaaa): 
    <input type="text" size="10" name="fec" onblur="valFecha(this)">
   </p>
   <p>
    Escriba cualquier cosa: 
    <input type="text" size="20" name="yyy">
   </p>
  </form>
 </body>
</html>
  #4 (permalink)  
Antiguo 13/03/2002, 10:15
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 4 meses
Puntos: 17
Re: Validar fecha introducida mediante form

Muchisimas gracias :)
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 14:18.