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:
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
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...
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>