Foros del Web » Programando para Internet » Javascript »

No funciona una FAQ (Otra vez MAL UBICADA en las FAQ´s)

Estas en el tema de No funciona una FAQ (Otra vez MAL UBICADA en las FAQ´s) en el foro de Javascript en Foros del Web. Hola, esta funcion funciona perfectamente pero como soy medio torpe no puedo evitar que se envie el formulario, probe con llamar la funcion OnSubmit() pero ...
  #1 (permalink)  
Antiguo 13/09/2004, 15:07
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 22 años, 9 meses
Puntos: 0
Esto funciona pero tiene un problema parami...

Hola, esta funcion funciona perfectamente pero como soy medio torpe no puedo evitar que se envie el formulario, probe con llamar la funcion OnSubmit() pero de esta manera ni siquiera se ejecuta.... ojala alguien me pueda ayudar .....
gracias.

Cita:
Iniciado por Kaopectate
P: ¿Como puedo validar un rango de fechas para que ambos valores sean no vacíos, válidos, y la fecha hasta sea mayor o igual que la fecha desde?

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;
    
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 
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));
     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.fec0)){
     if (
valFecha(document.f1.fec1)){
      if (
fechaMayorOIgualQue(document.f1.fec1, document.f1.fec0)){
       
bOk = true;
       
alert("Ok");
      } else {
       
alert("Rango inválido");
       
document.f1.fec1.focus();
      }
     } else {
      
alert("Fecha inválida");
      
document.f1.fec1.focus();
     }
    } else {
     
alert("Fecha inválida");
     
document.f1.fec0.focus();
    }
   }

  
</script>
 </head>
 <body>
  <form name="f1">
   <table>
    <tr>
     <td align="right">
      Fecha inicial (dd/mm/aaaa): 
     </td>
     <td>
      <input type="text" size="10" name="fec0">
     </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>
  </form>
 </body>
</html> 

Última edición por midpunto; 13/09/2004 a las 15:08
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 02:42.