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: 23 años
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(32), 10);
    var 
nAno parseInt(oTxt.value.substr(6), 10);
    var 
nRes 0;
    switch (
nMes){
     case 
1nRes 31; break;
     case 
2nRes 28; break;
     case 
3nRes 31; break;
     case 
4nRes 30; break;
     case 
5nRes 31; break;
     case 
6nRes 30; break;
     case 
7nRes 31; break;
     case 
8nRes 31; break;
     case 
9nRes 30; break;
     case 
10nRes 31; break;
     case 
11nRes 30; break;
     case 
12nRes 31; break;
    }
    return 
nRes + (((nMes == 2) && (nAno 4) == 0)? 10);
   }

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

   function 
valMes(oTxt){
    var 
bOk false;
    var 
nMes parseInt(oTxt.value.substr(32), 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 
0nAno.lengthi++){
      
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