Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/04/2010, 02:04
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 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