Foros del Web » Programando para Internet » Javascript »

Poner fecha

Estas en el tema de Poner fecha en el foro de Javascript en Foros del Web. Coma hago para que en un text box, pueda controlar que caracter pone , uno por uno Lo que pasa es que quiero que sea ...
  #1 (permalink)  
Antiguo 01/04/2002, 14:36
 
Fecha de Ingreso: diciembre-2001
Ubicación: Peru
Mensajes: 376
Antigüedad: 22 años, 5 meses
Puntos: 0
Poner fecha

Coma hago para que en un text box, pueda controlar que caracter pone , uno por uno
Lo que pasa es que quiero que sea para poner fechas asi
30/12/2001
Entonces quiero que el primer caracter no pase de 3 y el segundo no haya problema y, etc etc etc
Gracias
  #2 (permalink)  
Antiguo 01/04/2002, 19:11
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: Poner fecha

Prueba esta validación:

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 01/04/2002, 19:13
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: Poner 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, ya todo lo que dices está aqui.

Suerte.
  #4 (permalink)  
Antiguo 02/04/2002, 13:47
 
Fecha de Ingreso: diciembre-2001
Ubicación: Peru
Mensajes: 376
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Poner fecha

Gracias, pero como hago para que tambien pueda poner 01/01/2001 asi como 1/1/2001, es decir no importa si pongo 1 o 01
Gracias
  #5 (permalink)  
Antiguo 02/04/2002, 15:31
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: Poner fecha

Murallitz, esta noche con mas calma te indico lo que hay que cambiar.

Saludos.
  #6 (permalink)  
Antiguo 03/04/2002, 00:41
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: Poner fecha

Pruébala asi:

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

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

   function posSep(oTxt, cSep){
    var aPosic = new Array(0, 0);
    aPosic[0] = oTxt.value.indexOf(cSep);
    aPosic[1] = oTxt.value.lastIndexOf(cSep);
    return aPosic;
   }

   function valSep(oTxt, aPosic, cSep){
    var bOk = true;
    for (var i = 0; i < oTxt.value.length; i++){
     if ((i == aPosic[0]) || (i == aPosic[1]))
      bOk = bOk && (oTxt.value.charAt(i) == cSep);
     else
      bOk = bOk && (oTxt.value.charAt(i) != cSep);
    }
    return bOk;
   }

   function finMes(oTxt, aPosic){
    var nMes = parseInt(oTxt.value.substr(aPosic[0] + 1, aPosic[1] - aPosic[0] - 1), 10);
    var nAno = parseInt(oTxt.value.substr(aPosic[1] + 1), 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;
    }
    nRes += (((nMes == 2) && (nAno % 4)) == 0? 1: 0);
    return nRes;
   }

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

   function valMes(oTxt, aPosic){
    var bOk = false;
    var nMes = parseInt(oTxt.value.substr(aPosic[0] + 1, aPosic[1] - aPosic[0] - 1), 10);
    bOk = bOk || ((nMes >= 1) && (nMes <= 12));
    return bOk;
   }
continua...
  #7 (permalink)  
Antiguo 03/04/2002, 00:42
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: Poner fecha

...continuación

Código:
   function valAno(oTxt, aPosic){
    var bOk = true;
    var nAno = oTxt.value.substr(aPosic[1] + 1);
    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, cSep){
    var aPosic = posSep(oTxt, cSep);
    var bOk = true;
    if (oTxt.value != ""){
     bOk = bOk && (valSep(oTxt, aPosic, cSep));
     bOk = bOk && (valAno(oTxt, aPosic));
     bOk = bOk && (valMes(oTxt, aPosic));
     bOk = bOk && (valDia(oTxt, aPosic));
     if (!bOk){
      alert("Fecha inválida");
      oTxt.value = "";
      oTxt.focus();
     }
    }
   }

  </script>
 </head>
 <body>
  <form name="f1">
   <table>
    <tr>
     <td align="right">
      Escriba cualquier cosa:
     </td>
     <td>
      <input type="text" size="20" name="xxx">
     </td>
    </tr>
    <tr>
     <td align="right">
      Escriba una fecha (dd/mm/aaaa): 
     </td>
     <td>
      <input type="text" size="10" name="fec" onblur="valFecha(this, '/')">
     </td>
    </tr>
    <tr>
     <td align="right">
      Escriba cualquier cosa: 
     </td>
     <td>
      <input type="text" size="20" name="yyy">
     </td>
    </tr>
   </table>
  </form>
 </body>
</html>
Suerte.
  #8 (permalink)  
Antiguo 03/04/2002, 08:45
 
Fecha de Ingreso: diciembre-2001
Ubicación: Peru
Mensajes: 376
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Poner fecha

GRACIAS!!!!
Te Pasaste MUCHAS GRACIAS ME RESULTO MUY UTIL
De nuevo
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 10:28.