Ver Mensaje Individual
  #13 (permalink)  
Antiguo 01/12/2002, 18:12
Avatar de Kaopectate
Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 24 años, 9 meses
Puntos: 38
13.- Validación de fechas

P: ¿Como puedo validar una o mas fechas escritas en elementos TEXT?

R: [ver ejemplo]

Código PHP:
<html>
 <
head>
  <
script language="JavaScript">

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

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

   function 
finMes(oTxt){
    var 
nMes = parseInt(oTxt.value.substr(3, 2), 10);
    var 
nAno = parseInt(oTxt.value.substr(6), 10);
    var 
nRes = 0;
    switch (
nMes){
     case 
1: nRes = 31; break;
     case 
2: nRes = 28; 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 + (((nMes == 2) && (nAno % 4) == 0)? 1: 0);
   }

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

   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();
     } else 
alert("Fecha correcta");
    }
   }

  
</script>
 </head>
 <body>
  <form name="frm">
   Escriba fecha (dd/mm/aaaa): 
   <input type="text" size="10" name="fec">
   <br>
   <input type="button" value="Validar" 

onclick="valFecha(document.frm.fec)">
  </form>
 </body>
</html> 

Última edición por Kaopectate; 23/04/2003 a las 09:04