Ciao a tutti.
Ho un problema con lo script che posto di seguito e che ho trovato con l'uso della ricerca: in pratica con gli orari a cavallo della mezzanotte si hanno dei problemi... come posso ovviare al problema mantenendo la logica iniziale dello script ?
Logica iniziale dello script:
Ad esempio se nel campo precedente inserisco orario 23:00 e nel campo successivo successivo inserisco orario 01:00 mi dice giustamente orario inferiore al precedente, invece si tratta in realtà di un'altro giorno e dovrebbe essere convalidato...orario del campo B sempre > orario in campo A
orario del campo C sempre > orario in campo B
orario del campo D sempre > orario in campo C
orario del campo E sempre > orario in campo D
orario del campo F sempre > orario in campo E
orario del campo G sempre > orario in campo F
orario del campo H sempre > orario in campo G
codice:<script> function isTime(str) { str="0"+str+":0" spz = str.replace("\.",":").split(":"); // accetta anche il . come separatore hh = parseInt(spz[0],10) mm = parseInt(spz[1],10) if ((hh == 24 && mm == 0) || (hh < 24 && mm < 60)) return (hh*60+mm); return false; } function Calcola() { //b-a cx = "AUTOMA_BLOCCO"; cy = "SCATTO_LINEA"; x = isTime(document.myform.elements(cx).value); y = isTime(document.myform.elements(cy).value); if(x && y) { document.myform.elements(cy).style.background = 'white'; if(y>x) { document.myform.elements(cx).style.background = 'orange'; alert("Attenzione!\nOrario inferiore al precedente."); document.myform.elements(cx).value = 'HHMM'; } else { document.myform.elements(cx).style.background = 'white'; } } //c-b cx = "MANOVRA_TC"; cy = "AUTOMA_BLOCCO"; x = isTime(document.myform.elements(cx).value); y = isTime(document.myform.elements(cy).value); if(x && y) { document.myform.elements(cy).style.background = 'white'; if(y>x) { document.myform.elements(cx).style.background = 'orange'; alert("Attenzione!\nOrario inferiore al precedente."); document.myform.elements(cx).value = 'HHMM'; } else { document.myform.elements(cx).style.background = 'white'; } } //D-A cx = "SELEZIONE_TC"; cy = "SCATTO_LINEA"; x = isTime(document.myform.elements(cx).value); y = isTime(document.myform.elements(cy).value); if(x && y) { document.myform.elements(cy).style.background = 'white'; if(y<x) { document.myform.elements(cx).style.background = 'white'; document.myform.elements("DURATA_SELEZIONE_TC").style.background = 'white'; document.myform.elements("DURATA_SELEZIONE_TC").value = (x-y); } else { alert("Attenzione!\nOrario inferiore al precedente."); document.myform.elements(cx).value = 'HHMM'; document.myform.elements(cx).style.background = 'orange'; document.myform.elements("DURATA_SELEZIONE_TC").style.background = 'orange'; document.myform.elements("DURATA_SELEZIONE_TC").value = 0; } } //d-c cx = "SELEZIONE_TC"; cy = "MANOVRA_TC"; x = isTime(document.myform.elements(cx).value); y = isTime(document.myform.elements(cy).value); if(x && y) { document.myform.elements(cy).style.background = 'white'; if(y>x) { document.myform.elements(cx).style.background = 'orange'; alert("Attenzione!\nOrario inferiore al precedente."); document.myform.elements(cx).value = 'HHMM'; } else { document.myform.elements(cx).style.background = 'white'; } } //e-d cx = "INFO_REPERIBILI"; cy = "SELEZIONE_TC"; x = isTime(document.myform.elements(cx).value); y = isTime(document.myform.elements(cy).value); if(x && y) { document.myform.elements(cy).style.background = 'white'; if(y>x) { document.myform.elements(cx).style.background = 'orange'; alert("Attenzione!\nOrario inferiore al precedente."); document.myform.elements(cx).value = 'HHMM'; } else { document.myform.elements(cx).style.background = 'white'; } } //F-E cx = "MANOVRA_MANUALE"; cy = "INFO_REPERIBILI"; x = isTime(document.myform.elements(cx).value); y = isTime(document.myform.elements(cy).value); if(x && y) { document.myform.elements(cy).style.background = 'white'; if(y<x) { document.myform.elements(cx).style.background = 'white'; document.myform.elements("DURATA_LOGISTICA").style.background = 'white'; document.myform.elements("DURATA_LOGISTICA").value = (x-y); } else { alert("Attenzione!\nOrario inferiore al precedente."); document.myform.elements(cx).value = 'HHMM'; document.myform.elements(cx).style.background = 'orange'; document.myform.elements("DURATA_LOGISTICA").style.background = 'orange'; document.myform.elements("DURATA_LOGISTICA").value = 0; } } //G-F cx = "FINE_SELEZIONE"; cy = "MANOVRA_MANUALE"; x = isTime(document.myform.elements(cx).value); y = isTime(document.myform.elements(cy).value); if(x && y) { document.myform.elements(cy).style.background = 'white'; if(y<x) { document.myform.elements(cx).style.background = 'white'; document.myform.elements("DURATA_SELEZIONE_MANUALE").style.background = 'white'; document.myform.elements("DURATA_SELEZIONE_MANUALE").value = (x-y); } else { alert("Attenzione!\nOrario inferiore al precedente."); document.myform.elements(cx).value = 'HHMM'; document.myform.elements(cx).style.background = 'orange'; document.myform.elements("DURATA_SELEZIONE_MANUALE").style.background = 'orange'; document.myform.elements("DURATA_SELEZIONE_MANUALE").value = 0; } } //H-G cx = "FINE_EVENTO"; cy = "FINE_SELEZIONE"; x = isTime(document.myform.elements(cx).value); y = isTime(document.myform.elements(cy).value); if(x && y) { document.myform.elements(cy).style.background = 'white'; if(y<x) { document.myform.elements(cx).style.background = 'white'; document.myform.elements("DURATA_RIPARAZIONE").style.background = 'white'; document.myform.elements("DURATA_RIPARAZIONE").value = (x-y); } else { alert("Attenzione!\nOrario inferiore al precedente."); document.myform.elements(cx).value = 'HHMM'; document.myform.elements(cx).style.background = 'orange'; document.myform.elements("DURATA_RIPARAZIONE").style.background = 'orange'; document.myform.elements("DURATA_RIPARAZIONE").value = 0; } } //H-A cx = "FINE_EVENTO"; cy = "SCATTO_LINEA"; x = isTime(document.myform.elements(cx).value); y = isTime(document.myform.elements(cy).value); if(x && y) { document.myform.elements(cy).style.background = 'white'; if(y<x) { document.myform.elements(cx).style.background = 'white'; document.myform.elements("DURATA_EVENTO").style.background = 'white'; document.myform.elements("DURATA_EVENTO").value = (x-y); } else { alert("Attenzione!\nOrario inferiore al precedente."); document.myform.elements(cx).value = 'HHMM'; document.myform.elements(cx).style.background = 'orange'; document.myform.elements("DURATA_EVENTO").style.background = 'orange'; document.myform.elements("DURATA_EVENTO").value = 0; } } } </script> <form name="myform"> A<input id="SCATTO_LINEA" type="text" name="SCATTO_LINEA" size="10" onblur="Calcola()"> B<input id="AUTOMA_BLOCCO" type="text" name="AUTOMA_BLOCCO" size="10" onblur="Calcola()"> C<input id="MANOVRA_TC" type="text" name="MANOVRA_TC" size="10" onblur="Calcola()"> D<input id="SELEZIONE_TC" type="text" name="SELEZIONE_TC" size="10" onblur="Calcola()"> E<input id="INFO_REPERIBILI" type="text" name="INFO_REPERIBILI" size="10" onblur="Calcola()"> F<input id="MANOVRA_MANUALE" type="text" name="MANOVRA_MANUALE" size="10" onblur="Calcola()"> G<input id="FINE_SELEZIONE" type="text" name="FINE_SELEZIONE" size="10" onblur="Calcola()"> H<input id="FINE_EVENTO" type="text" name="FINE_EVENTO" size="10" onblur="Calcola()"> F-E<input type="text" name="DURATA_LOGISTICA" size="10" readonly value="0"> D-A<input type="text" name="DURATA_SELEZIONE_TC" size="10" readonly value="0"> G-F<input type="text" name="DURATA_SELEZIONE_MANUALE" size="10" readonly value="0"> H-G<input type="text" name="DURATA_RIPARAZIONE" size="10" readonly value="0"> H-A<input type="text" name="DURATA_EVENTO" size="10" readonly value="0"> </form>