Foros del Web » Programando para Internet » Javascript »

valida fecha

Estas en el tema de valida fecha en el foro de Javascript en Foros del Web. alguien conoce alguna funcion que verifique si el dato ingresado es fecha valida ej: 30/02/2002 ke alguien me ayudeeeeeeeeeeeeeeeeee...
  #1 (permalink)  
Antiguo 04/03/2002, 18:13
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
valida fecha

alguien conoce alguna funcion que verifique si el dato ingresado es fecha valida
ej:
30/02/2002

ke alguien me ayudeeeeeeeeeeeeeeeeee

  #2 (permalink)  
Antiguo 05/03/2002, 06:07
Avatar de eskillar  
Fecha de Ingreso: enero-2002
Ubicación: Euskadi
Mensajes: 34
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: valida fecha

Hola amigo...
Como posible solución a ese habitual problema te diré que yo no permito a los usuarios de la web introducir campos de fecha 'a pelo', es decir desde un campo input de un form.
Se pueden utilizar uno de los muchos calendarios existentes, que abrirías en otra pagina modal para que el usuario seleccionara una fecha en el mismo y se la pasara a la pagina de origen, correctamente formateada (además de que queda mucho más elegante, dicho sea de paso).
Para conseguir este tipo de calendarios, en cualquier página de Java Script o dhtml los hay a montones.

Un saludo y suerte.
Diego ;)
  #3 (permalink)  
Antiguo 05/03/2002, 14:34
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: valida fecha

es ke trabajo para un banco y ellos deciden el formato..
  #4 (permalink)  
Antiguo 05/03/2002, 15:23
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: valida fecha

Te envio un ejemplo bastante completo que yo utilizo. Pruébalo:

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;
   }

           contunua...
  #5 (permalink)  
Antiguo 05/03/2002, 15:25
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: valida fecha

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>
-----------------------------------------------------------------------------------
Pruébalo y hablamos.
  #6 (permalink)  
Antiguo 05/03/2002, 16:51
 
Fecha de Ingreso: febrero-2002
Mensajes: 184
Antigüedad: 22 años, 2 meses
Puntos: 0
Re: valida fecha

Tenès que utilizar la funciòn isdate()

por ej:

if isdate(variable_fecha) then
response.write "Es un date del tipo fecha"
else
response.write "el dato no corresponde a una fecha"
end if


Enrique2 ;)
  #7 (permalink)  
Antiguo 05/03/2002, 17:37
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: valida fecha

ey amigo Kaopectate:
ke keres ke te diga...funciono a la perfeccion, tiene un detallito pero es minimo..te pasaste me sirvio caleta (habia probado el isdate pero tenia problemas)...
aprovechando tu sabiduria ahora tengo otra consulta:
ingreso fecha de inicio
ingreso fecha de termino

como valido para que la fecha de inicio (dd/mm/aaaa) sea menor o igual a la feacha de termino.
me pasaron un funcion pero funciona ahi no mas

:P
  #8 (permalink)  
Antiguo 05/03/2002, 18:05
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: valida fecha

Pruébalo asi:

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...
  #9 (permalink)  
Antiguo 05/03/2002, 18: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: valida fecha

...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));
     return bOk;
    }
   }

   function fechaMayorOIgualQue(fec0, fec1){
    var bRes = false;
    var sDia0 = fec0.value.substr(0, 2);
    var sMes0 = fec0.value.substr(3, 2);
    var sAno0 = fec0.value.substr(6, 4);
    var sDia1 = fec1.value.substr(0, 2);
    var sMes1 = fec1.value.substr(3, 2);
    var sAno1 = fec1.value.substr(6, 4);
    if (sAno0 > sAno1) bRes = true;
    else {
     if (sAno0 == sAno1){
      if (sMes0 > sMes1) bRes = true;
      else {
       if (sMes0 == sMes1)
        if (sDia0 >= sDia1) bRes = true;
      }
     }
    }
    return bRes;
   }

   function valFechas(){
    var bOk = false;
    if (valFecha(document.f1.fec1)){
     if (fechaMayorOIgualQue(document.f1.fec1, document.f1.fec0))
      bOk = true;
    }
    if (!bOk){
     alert("Fecha inválida");
     document.f1.fec1.focus();
    }
   }

  function padNmb(nStr, nLen){
   var sRes = String(nStr);
   var sCeros = "0000000000";
   return sCeros.substr(0, nLen - sRes.length) + sRes;
  }

   function cargaFec0(){
    var fecAct = new Date();
    var sAno = fecAct.getFullYear();
    var sMes = fecAct.getMonth() + 1;
    var sDia = fecAct.getDate();
    document.f1.fec0.value= padNmb(sDia, 2) + "/" + padNmb(sMes, 2) + "/" + padNmb(sAno, 4);
   }

  </script>
 </head>
continua...
  #10 (permalink)  
Antiguo 05/03/2002, 18:07
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: valida fecha

...continuación

Código:
 <body>
  <form name="f1">
   <table>
    <tr>
     <td align="right">
      Fecha inicial (dd/mm/aaaa): 
     </td>
     <td>
      <input type="text" size="10" name="fec0" disabled>
     </td>
    </tr>
    <tr>
     <td align="right">
      Fecha final (dd/mm/aaaa): 
     </td>
     <td>
      <input type="text" size="10" name="fec1">
     </td>
    </tr>
    <tr>
     <td colspan="2" align="center">
      <input type="button" name="val" value="Validar" onclick="valFechas()">
     </td>
    </tr>
   </table>
   <script language="JavaScript">
    cargaFec0();
   </script>
  </form>
 </body>
</html>
Suerte.
  #11 (permalink)  
Antiguo 06/03/2002, 07:09
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: valida fecha

guauuuuu...
eres un libro abierto de conocimientos...ufff..
ok amigo lo probare durante la tarde y te aviso...
thankiu por tu tpo...
  #12 (permalink)  
Antiguo 06/03/2002, 10:54
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: valida fecha

tamos daos!!!!!! :P :P
hice una fusion del 1ro con el 2do codigo y kedo funcionando del 1...
todo good....vale...te pasaste me salvaste un par de dias de cabeceo...

gracias por tu ayuda...si te puedo ayudar en algo (de preferencia ASP porke de javascript mi aporte es nulo <img src='images/tongue.gif' width=15 height=15 align=middle>) estoy a tu disposicion

saludos amigo
  #13 (permalink)  
Antiguo 06/03/2002, 11:05
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: valida fecha

Ya te preguntaré. Saludos.
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 06:46.