Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125

    Problema con orari a cavallo di mezzanotte

    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>

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998

    Re: Problema con orari a cavallo di mezzanotte

    Originariamente inviato da Mizushi
    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...
    Definisci i criteri secondo i quali un orario inferiore al precedente debba essere validato, cosi' come lo enunci qualunque orario dovrebbe esserlo dato che il detto "si tratta in realtà di un'altro giorno " vale sempre

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125

    Re: Re: Problema con orari a cavallo di mezzanotte

    Originariamente inviato da br1
    Definisci i criteri secondo i quali un orario inferiore al precedente debba essere validato, cosi' come lo enunci qualunque orario dovrebbe esserlo dato che il detto "si tratta in realtà di un'altro giorno " vale sempre

    ciao
    Il criterio dovrebbe essere che:

    1) Se l'orario successivo è inferiore all'orario precedente nell'arco della stessa giornata il form non deve essere validato.

    2) Se, invece, l'orario successivo è inferiore all'orario precedente ma ricade già all'interno della giornata successiva ( cioè allo scattare della mezzanotte ) il form deve essere validato.

    Esempi:

    Caso 1 ) orario del campo A = 11:00 >>> orario del campo B = 10:00 il form non va validato, perchè orario del campo A > orario in campo B;

    Caso 2 ) orario del campo A = 23:00 >>> orario del campo B = 01:00 il form va validato, perchè orario del campo B > orario in campo A ( è già iniziato un nuovo giorno... )

    Mi sono spiegato malissimo... :master:

  4. #4
    Quello che ho capito io &egrave; che nella tua form non c'&egrave; il giorno,
    quindi andrebbe bene anche:

    Caso 1 ) orario del campo A = 11:00 >>> orario del campo B = 10:00 il form va validato, perchè orario del campo A < orario in campo B, visto che l'orario del campo B indica le 10.00 di domani!;

    E se l'evento dura pi&ugrave; di 24 ore?

    Occorre che pensi di mettere anche il giorno, da qualche parte!

    ... o no?

    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Da un controllo approssimativo dello script non mi sembra che tu indichi/verifichi la data ma solo l'orario pertanto o aggiungi nello script il controllo della data, oppure limiti l'inserimento alle ore 24:00.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da cavicchiandrea
    Da un controllo approssimativo dello script non mi sembra che tu indichi/verifichi la data ma solo l'orario pertanto o aggiungi nello script il controllo della data, oppure limiti l'inserimento alle ore 24:00.
    Puoi spiegarti meglio? grazie

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non saprei come
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da homezappa
    Quello che ho capito io &egrave; che nella tua form non c'&egrave; il giorno,
    quindi andrebbe bene anche:

    Caso 1 ) orario del campo A = 11:00 >>> orario del campo B = 10:00 il form va validato, perchè orario del campo A < orario in campo B, visto che l'orario del campo B indica le 10.00 di domani!;

    E se l'evento dura pi&ugrave; di 24 ore?

    Occorre che pensi di mettere anche il giorno, da qualche parte!

    ... o no?

    Zappa
    Grazie x il suggerimento e la risposta... ma da dove comincio ??? :master:

  9. #9
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    up

  10. #10
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    up

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.