Foros del Web » Programando para Internet » Javascript »

validar fecha en array

Estas en el tema de validar fecha en array en el foro de Javascript en Foros del Web. holas gente, tengo un validador de fecha y anda bien pero lo necesito para validar ahora inputs que se me generan en arrays y no ...
  #1 (permalink)  
Antiguo 08/09/2009, 13:27
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 19 años, 3 meses
Puntos: 49
validar fecha en array

holas gente, tengo un validador de fecha y anda bien pero lo necesito para validar ahora inputs que se me generan en arrays y no me funciona alguna ayuda, para esto? mediante javascript...

saludos...

validafecha.js
Código javascript:
Ver original
  1. function esDigito(sChr){
  2.     var sCod = sChr.charCodeAt(0);
  3.     return ((sCod > 47) && (sCod < 58));
  4.    }
  5.  
  6.    function valSep(oTxt){
  7.     var bOk = false;
  8.     var sep1 = oTxt.value.charAt(2);
  9.     var sep2 = oTxt.value.charAt(5);
  10.     bOk = bOk || ((sep1 == "-") && (sep2 == "-"));
  11.     bOk = bOk || ((sep1 == "/") && (sep2 == "/"));
  12.     return bOk;
  13.    }
  14.  
  15.    function finMes(oTxt){
  16.     var nMes = parseInt(oTxt.value.substr(3, 2), 10);
  17.     var nAno = parseInt(oTxt.value.substr(6), 10);
  18.     var nRes = 0;
  19.     switch (nMes){
  20.      case 1: nRes = 31; break;
  21.      case 2: nRes = 28; break;
  22.      case 3: nRes = 31; break;
  23.      case 4: nRes = 30; break;
  24.      case 5: nRes = 31; break;
  25.      case 6: nRes = 30; break;
  26.      case 7: nRes = 31; break;
  27.      case 8: nRes = 31; break;
  28.      case 9: nRes = 30; break;
  29.      case 10: nRes = 31; break;
  30.      case 11: nRes = 30; break;
  31.      case 12: nRes = 31; break;
  32.     }
  33.     return nRes + (((nMes == 2) && (nAno % 4) == 0)? 1: 0);
  34.    }
  35.  
  36.    function valDia(oTxt){
  37.     var bOk = false;
  38.     var nDia = parseInt(oTxt.value.substr(0, 2), 10);
  39.     bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
  40.     return bOk;
  41.    }
  42.  
  43.    function valMes(oTxt){
  44.     var bOk = false;
  45.     var nMes = parseInt(oTxt.value.substr(3, 2), 10);
  46.     bOk = bOk || ((nMes >= 1) && (nMes <= 12));
  47.     return bOk;
  48.    }
  49.  
  50.    function valAno(oTxt){
  51.     var bOk = true;
  52.     var nAno = oTxt.value.substr(6);
  53.     bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
  54.     if (bOk){
  55.      for (var i = 0; i < nAno.length; i++){
  56.       bOk = bOk && esDigito(nAno.charAt(i));
  57.      }
  58.     }
  59.     return bOk;
  60.    }
  61.  
  62.    function valFecha(oTxt){
  63.     var bOk = true;
  64.     if (oTxt.value != ""){
  65.      bOk = bOk && (valAno(oTxt));
  66.      bOk = bOk && (valMes(oTxt));
  67.      bOk = bOk && (valDia(oTxt));
  68.      bOk = bOk && (valSep(oTxt));
  69.      if (!bOk){
  70.       alert("La fecha ingresada es invalida");
  71.       oTxt.value = "";
  72.       return (false);
  73.      };
  74.     }
  75.    }


Código php:
Ver original
  1. <form name="enviar">
  2. <input type="text" name="fecha[]" size="15" maxlength="10" tabindex="[]" onblur="valFecha(document.enviar.fecha)" />
  3. </form>

este trate de ponerlo como : onblur="valFecha(document.enviar.fecha[])"
etc.. y no me funciona

saludos
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #2 (permalink)  
Antiguo 08/09/2009, 13:34
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: validar fecha en array

Ponle un atributo ID al campo, y accede a él a través de getElementById


Saludos.
  #3 (permalink)  
Antiguo 08/09/2009, 14:03
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 19 años, 3 meses
Puntos: 49
Respuesta: validar fecha en array

gracias alvaroG pero mi pregunta es como iria mas menos eso :/ mi fuerte no es javascript ni idea como ponerlo...

le puse un id="validar" a mi imput pero puse un document.getElementById('fecha').value
en el evento onblur cosa que no creo valla hay por ello no me funciono seria editando, la funcion?

saludos y sorry por las molestias...
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #4 (permalink)  
Antiguo 08/09/2009, 14:10
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: validar fecha en array

Si le pones id="validar", deberías poder usar

valFecha( document.getElementById("validar") )

de la misma forma en la que esperabas que funcionara

valFecha(document.enviar.fecha)


Saludos
  #5 (permalink)  
Antiguo 08/09/2009, 14:34
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 19 años, 3 meses
Puntos: 49
Respuesta: validar fecha en array

me funciona pero solo con el primer campo :/ el resto de los campos que genero fecha[] no me validan :/

gracias por la ayuda
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #6 (permalink)  
Antiguo 08/09/2009, 15:13
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: validar fecha en array

fecha[] es un campo de texto... ¿a qué te refieres con "el resto de los campos"? Pon un ejemplo de la entrada que espera tu función


Saludos.
  #7 (permalink)  
Antiguo 15/09/2009, 09:35
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 19 años, 3 meses
Puntos: 49
Respuesta: validar fecha en array

pues que hago un for con php de un formulario por ejemplo...

Código php:
Ver original
  1. <?php
  2. for($i=0;$i<=$variablex;$i++)
  3. {
  4. ?>
  5. <form name.... etc...
  6. y aqui genero los campos fecha
  7. <input type="text" name="fecha[]" />
  8.  
  9. </form>
  10. <?php
  11. }
  12. ?>

y hagamos cuenta que se crean 20 campos :/ eso no me valida ponga el for fuera del form o dentro...

saludos-...
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #8 (permalink)  
Antiguo 15/09/2009, 10:25
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: validar fecha en array

Entiendo. Creo que desde el principio esto se hizo más complicado de lo que debía ser (lo que voy a sugerir ahora es más simple y no se me había ocurrido )

Olvida el ID y usa:

onblur="valFecha(this)"

en teoría eso debería disparar la validación para cada campo.


Saludos.
  #9 (permalink)  
Antiguo 16/09/2009, 14:18
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 19 años, 3 meses
Puntos: 49
Respuesta: validar fecha en array

acierto para ti toda la razón....

muchas gracias
__________________
Gokuh Salvo al mundo. PUNTO!!!!
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 19:33.