Foros del Web » Programando para Internet » Javascript »

ejecutar una funcion que valida horas para varios input y listbox

Estas en el tema de ejecutar una funcion que valida horas para varios input y listbox en el foro de Javascript en Foros del Web. POR FAVOR AYUDA!!!! YA NO SE ME OCURRE NADA HE INTENTADO DE TODO! necesito hacer que esta funcion me valide los 3 bloques! NOTA esta ...
  #1 (permalink)  
Antiguo 29/04/2010, 17:24
 
Fecha de Ingreso: febrero-2010
Ubicación: valencia
Mensajes: 146
Antigüedad: 14 años, 9 meses
Puntos: 3
ejecutar una funcion que valida horas para varios input y listbox

POR FAVOR AYUDA!!!! YA NO SE ME OCURRE NADA HE INTENTADO DE TODO!

necesito hacer que esta funcion me valide los 3 bloques!
NOTA
esta funcion esta bien porq la probe con un solo bloque y si lo hace pero al ser 3 ya no me funciona!

y no puedo establecer la funcion para 3 bloques fijos porq para donde lo voy a usar el usuario puede agregar todos los bloques que este quiera
por eso use el for en el boton enviar


creo q el problema es como concateno las variables q paso como parametro alli adentro!! y estoy corriendo en frio las variables y nada! al entrar en el for me dice undefined!!

aqui esta el codigo



<HTML>
<HEAD>
<TITLE> prueba de horas y am y pm</TITLE>

<SCRIPT LANGUAGE="JavaScript">


function CompararHoras(sHora1, sHora2, viam, vipm) {

var arHora1 = sHora1.split(":");
var arHora2 = sHora2.split(":");
var viam;
var vipm;

// Obtener horas y minutos (hora 1)
var hh1 = parseInt(arHora1[0],10);
var mm1 = parseInt(arHora1[1],10);

// Obtener horas y minutos (hora 2)
var hh2 = parseInt(arHora2[0],10);
var mm2 = parseInt(arHora2[1],10);

// Comparar MD5: bef463d2dca2d7da202a2c3d58c22d13

////////////////////primer if comprara si el primer listbox es AM si es asi lo acepta/////////////////////////////////

if (viam<vipm)
{

return "Hora correcta";
}

else

{

////////////////////segundo if comprara si el primer listbox es PM si es asi NO lo acepta/////////////////////////////////

if (viam>vipm)
{
return "Hora incorrecta";
}

else

{

////////////////////Tercer if comprara si el primer o segundo listbox es igual si es asi lo acepta/////////////////////////////////

if (viam==vipm)
{

///////////////////////////si las horas del primer texbox es menor a las del segundo acepta////////////////////

if (hh1<hh2 || (hh1==hh2 && mm1<mm2))
return "Hora correcta";

else

//////////////////si las horas del primer texbox son mayores no lo acepta pero si las horas son iguales y los minutos del/////
//////////////////primero son mayor o igual que el segundo de igual manera no lo acepta/////////////////////////////////////

if (hh1>hh2 || (hh1==hh2 && mm1>=mm2))
return "Hora incorrecta";

}
}
}
// "[/^(1|01|2|02|3|03|4|04|5|05|6|06|7|07|8|08|9|09|10| 11|12)\:([0-5]0|[0-5][1-9])/]"

}

function fecha(a){

//onChange="alert(CompararHoras(h1.value,h2.value,va r1.value,var2.value));"

patron ="/^(1|01|2|02|3|03|4|04|5|05|6|06|7|07|8|08|9|09|10| 11|12)\:([0-5]0|[0-5][1-9])/$";
if(!/^(1|01|2|02|3|03|4|04|5|05|6|06|7|07|8|08|9|09|10| 11|12)\:([0-5]0|[0-5][1-9])$/.test(a.value))
alert(" MALO");

}

</SCRIPT>

</HEAD>

<BODY>
<form action="btnComparar" method="post">
<p>hora inicio
<INPUT TYPE="text" NAME="hini1" value="08:15" onBlur="return fecha(this)">
<label>
<select name="vam1" size="1" id="vam1">

<option>1</option>
<option>2</option>
</select>
</label>
<BR>
hora final<INPUT TYPE="text" NAME="hfin1" value="09:30" onBlur="return fecha(this)">
<label>
<select name="vpm1" size="1" id="vpm1">
<option>1</option>
<option>2</option>
</select>
</label>
</p>
<p>&nbsp;</p>
<p>hora inicio
<INPUT TYPE="text" NAME="hini2" value="08:15" onBlur="return fecha(this)">
<label>
<select name="vam2" size="1" id="vam2">
<option>1</option>
<option>2</option>
</select>
</label>
<BR>
hora final
<INPUT TYPE="text" NAME="hfin2" value="09:30" onBlur="return fecha(this)">
<label>
<select name="vpm2" size="1" id="vpm2">
<option>1</option>
<option>2</option>
</select>
</label>
</p>
<p>&nbsp;</p>
<p>hora inicio
<INPUT TYPE="text" NAME="hini3" value="08:15" onBlur="return fecha(this)">
<label>
<select name="vam3" size="1" id="vam3">
<option>1</option>
<option>2</option>
</select>
</label>
<BR>
hora final
<INPUT TYPE="text" NAME="hfin3" value="09:30" onBlur="return fecha(this)">
<label>
<select name="vpm3" size="1" id="vpm3">
<option>1</option>
<option>2</option>
</select>
</label>
</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>
<INPUT TYPE="button" NAME="btnComparar" Value="Comparar horas" OnClick= "
for(var j=1;j<4;j++)
{

alert(CompararHoras('hini'+j.value,'hfin'+j.value, 'vam'+j.value,'vpm'+j.value));
alert(j);
}">

</p>
</form>
</BODY>
</HTML>
  #2 (permalink)  
Antiguo 30/04/2010, 02:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: ejecutar una funcion que valida horas para varios input y listbox

Si puedes usar el formato de hora de 24 horas (01:00 pm = 13:00) aquí te dejo algo que te puede servir.


Código HTML:
Ver original
  1. <TITLE> prueba de horas</TITLE>
  2. <SCRIPT LANGUAGE="JavaScript">
  3.  
  4. var horaInicial;
  5.  
  6. function validaHoras(formulario){
  7. var error=0;
  8. for(i=0;i<formulario.elements.length;i++){
  9.     if(formulario.elements[i].name.substr(0,1)=="h"){
  10.         hora=toDate(formulario.elements[i].value,"h:m")
  11.         if(hora=="Error") {
  12.         alert(formulario.elements[i].name + " es incorecta ("+formulario.elements[i].value+")");
  13.         error++;
  14.         }else{
  15.             if(formulario.elements[i].name.substr(0,4)=="hini"){
  16.                 horaInicial=hora;
  17.             }else{
  18.                 if(hora<=horaInicial) {
  19.                     alert (formulario.elements[i].name + " es igual o inferior a hini"+formulario.elements[i].name.substr(4));
  20.                     error++;
  21.                 }
  22.             }
  23.         }
  24.     }
  25. }
  26. if(error==0){
  27.     alert("Todo corecto");
  28. }else{
  29.     alert("Hay "+error+" errores!!!!!")
  30. }
  31. }
  32. function toDate(dStr,format) {
  33.     var now = new Date();
  34.     if(parseInt(dStr.substr(0,dStr.indexOf(":")),10)<0
  35.     || parseInt(dStr.substr(0,dStr.indexOf(":")),10)>23
  36.     || parseInt(dStr.substr(dStr.indexOf(":")+1),10)<0
  37.     || parseInt(dStr.substr(dStr.indexOf(":")+1),10)>59){
  38.     return "Error";
  39.     }else{
  40.     if (format == "h:m") {
  41.         now.setHours(dStr.substr(0,dStr.indexOf(":")));
  42.         now.setMinutes(dStr.substr(dStr.indexOf(":")+1));
  43.         now.setSeconds(0);
  44.         return now;
  45.     }else return "Error";
  46.     }
  47. }
  48.  
  49. function validaHora(obj){
  50.         hora=toDate(obj.value,"h:m")
  51.         if(hora=="Error"){
  52.          alert(obj.value + " es incorrecto!!!");
  53.          }else{
  54.          alert(hora);
  55.          }
  56. }
  57.  
  58. </HEAD>
  59. <form action="btnComparar" method="post">
  60.   <p>hora inicio
  61.     <INPUT TYPE="text" NAME="hini1" value="08:15" onBlur="validaHora(this)">
  62.     <label>
  63.     </label>
  64.     <BR>
  65.     hora final
  66.     <INPUT TYPE="text" NAME="hfin1" value="15:30" onBlur="validaHora(this)">
  67.     <label>
  68.     </label>
  69.   </p>
  70.   <p>&nbsp;</p>
  71.   <p>hora inicio
  72.     <INPUT TYPE="text" NAME="hini2" value="08:15" onBlur="validaHora(this)">
  73.     <label>
  74.     </label>
  75.     <BR>
  76.     hora final
  77.     <INPUT TYPE="text" NAME="hfin2" value="09:30" onBlur="validaHora(this)">
  78.     <label>
  79.     </label>
  80.   </p>
  81.   <p>&nbsp;</p>
  82.   <p>hora inicio
  83.     <INPUT TYPE="text" NAME="hini3" value="08:15" onBlur="validaHora(this)">
  84.     <label>
  85.     </label>
  86.     <BR>
  87.     hora final
  88.     <INPUT TYPE="text" NAME="hfin3" value="09:30" onBlur="validaHora(this)">
  89.     <label>
  90.     </label>
  91.   </p>
  92.   <p>&nbsp;</p>
  93.   <p>&nbsp;</p>
  94.   <p>
  95.     <INPUT TYPE="button" NAME="btnComparar" Value="Comparar horas" OnClick= "validaHoras(this.form)">
  96.   </p>
  97. </form>
  98. </BODY>
  99. </HTML>


Si te es imprescindible el formato am/pm se podria pensar en una conversion... pero complica las cosas....

Quim
  #3 (permalink)  
Antiguo 30/04/2010, 11:23
 
Fecha de Ingreso: febrero-2010
Ubicación: valencia
Mensajes: 146
Antigüedad: 14 años, 9 meses
Puntos: 3
Respuesta: ejecutar una funcion que valida horas para varios input y listbox

gracias :)

Etiquetas: ejecutar, funcion, horas, input, listbox
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 00:57.