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<SCRIPT LANGUAGE="JavaScript">
var horaInicial;
function validaHoras(formulario){
var error=0;
for(i=0;i<formulario.elements.length;i++){
if(formulario.elements[i].name.substr(0,1)=="h"){
hora=toDate(formulario.elements[i].value,"h:m")
if(hora=="Error") {
alert(formulario.elements[i].name + " es incorecta ("+formulario.elements[i].value+")");
error++;
}else{
if(formulario.elements[i].name.substr(0,4)=="hini"){
horaInicial=hora;
}else{
if(hora<=horaInicial) {
alert (formulario.elements[i].name + " es igual o inferior a hini"+formulario.elements[i].name.substr(4));
error++;
}
}
}
}
}
if(error==0){
alert("Todo corecto");
}else{
alert("Hay "+error+" errores!!!!!")
}
}
function toDate(dStr,format) {
var now = new Date();
if(parseInt(dStr.substr(0,dStr.indexOf(":")),10)<0
|| parseInt(dStr.substr(0,dStr.indexOf(":")),10)>23
|| parseInt(dStr.substr(dStr.indexOf(":")+1),10)<0
|| parseInt(dStr.substr(dStr.indexOf(":")+1),10)>59){
return "Error";
}else{
if (format == "h:m") {
now.setHours(dStr.substr(0,dStr.indexOf(":")));
now.setMinutes(dStr.substr(dStr.indexOf(":")+1));
now.setSeconds(0);
return now;
}else return "Error";
}
}
function validaHora(obj){
hora=toDate(obj.value,"h:m")
if(hora=="Error"){
alert(obj.value + " es incorrecto!!!");
}else{
alert(hora);
}
}
<form action="btnComparar" method="post"> <INPUT TYPE="text" NAME="hini1" value="08:15" onBlur="validaHora(this)"> hora final
<INPUT TYPE="text" NAME="hfin1" value="15:30" onBlur="validaHora(this)"> <INPUT TYPE="text" NAME="hini2" value="08:15" onBlur="validaHora(this)"> hora final
<INPUT TYPE="text" NAME="hfin2" value="09:30" onBlur="validaHora(this)"> <INPUT TYPE="text" NAME="hini3" value="08:15" onBlur="validaHora(this)"> hora final
<INPUT TYPE="text" NAME="hfin3" value="09:30" onBlur="validaHora(this)"> <INPUT TYPE="button" NAME="btnComparar" Value="Comparar horas" OnClick= "validaHoras(this.form)">
Si te es imprescindible el formato am/pm se podria pensar en una conversion... pero complica las cosas....
Quim