Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692

    Orario prec sempre maggiore di quello succ

    Ciao.

    Ravanando con la ricerca ho trovato questa interessante funzione.

    Avrei però bisogno di una modifica che non so come fare, in sostanza avrei necessità che:


    [list=1]
    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[/list=1]


    Ecco lo script ricopiato dalla discussione originale:

    codice:
    <html>
    
    <head>
    <script language="JavaScript"> 
    <!-- 
    
    
    var difference = function(leftHour, rightHour){
    	if(!leftHour || !rightHour)
    		return 0;
    	spt = leftHour.split(":");
    	var totLeft = parseInt(spt[0],10) * 60 + parseInt(spt[1],10);
    	spt = rightHour.split(":");
    	var totRight = parseInt(spt[0],10) * 60 + parseInt(spt[1],10);
    	
    	if (totLeft < totRight) {
    
        alert("ko");
        return 0;
    
    }
    	
    	return totLeft - totRight;
    }
    
    function Calcola()
    {
    
    	var diff1 = difference(document.myForm.F.value, document.myForm.E.value);
    	var diff2 = difference(document.myForm.D.value, document.myForm.A.value);
    	var diff3 = difference(document.myForm.G.value, document.myForm.F.value);
    	var diff4 = difference(document.myForm.H.value, document.myForm.G.value);
    	var diff5 = difference(document.myForm.H.value, document.myForm.A.value);
    	
    	document.myForm.RISULTATO1.value = diff1
    	document.myForm.RISULTATO2.value = diff2
    	document.myForm.RISULTATO3.value = diff3
    	document.myForm.RISULTATO4.value = diff4
    	document.myForm.RISULTATO5.value = diff5
        
    
    }
    // -->
    </script>
    
    </head>
    <body>
    
    <form name="myForm">
    
    A<input type="text" name="A" size="20" onkeyup="Calcola()">
    B<input type="text" name="B" size="20" onkeyup="Calcola()">
    C<input type="text" name="C" size="20" onkeyup="Calcola()">
    D<input type="text" name="D" size="20" onkeyup="Calcola()">
    E<input type="text" name="E" size="20" onkeyup="Calcola()">
    F<input type="text" name="F" size="20" onkeyup="Calcola()">
    G<input type="text" name="G" size="20" onkeyup="Calcola()">
    H<input type="text" name="H" size="20" onkeyup="Calcola()">
    
    
    
    
      
    F-E<input type="text" name="RISULTATO1" size="20" value="0" readonly>
    D-A<input type="text" name="RISULTATO2" size="20" value="0" readonly>
    G-F<input type="text" name="RISULTATO3" size="20" value="0" readonly>
    H-G<input type="text" name="RISULTATO4" size="20" value="0" readonly>
    H-A<input type="text" name="RISULTATO5" size="20" value="0" readonly>
    
    
    </form>
    
    </body>
    
    </html>
    "Ubi Maior, Minor Cessat"
    Domandare è lecito, rispondere è cortesia...
    A tutti è dovuta una risposta, comunque...

    “Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Il titolo dice il contrario di quello che chiedi
    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() {
     for(var i=1; i<=7; i++) {
    	cx = ("ABCDEFGH").substr(i-1,1);
    	cy = ("ABCDEFGH").substr(i,1);
    	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("RISULTATO"+i).value = (y-x);
    		} else {
    			document.myForm.elements(cy).style.background = 'orange';
    		}
    	}
     }
    }
    </script>
    
    <form name="myForm">
    
    A<input type="text" name="A" size="5" onkeyup="Calcola()">
    B<input type="text" name="B" size="5" onkeyup="Calcola()">
    C<input type="text" name="C" size="5" onkeyup="Calcola()">
    D<input type="text" name="D" size="5" onkeyup="Calcola()">
    E<input type="text" name="E" size="5" onkeyup="Calcola()">
    F<input type="text" name="F" size="5" onkeyup="Calcola()">
    G<input type="text" name="G" size="5" onkeyup="Calcola()">
    H<input type="text" name="H" size="5" onkeyup="Calcola()">
    
    
    
    
      
    B-A<input type="text" name="RISULTATO1" size="5" value="0" readonly>
    C-B<input type="text" name="RISULTATO2" size="5" value="0" readonly>
    D-C<input type="text" name="RISULTATO3" size="5" value="0" readonly>
    E-D<input type="text" name="RISULTATO4" size="5" value="0" readonly>
    F-E<input type="text" name="RISULTATO5" size="5" value="0" readonly>
    G-F<input type="text" name="RISULTATO6" size="5" value="0" readonly>
    H-G<input type="text" name="RISULTATO7" size="5" value="0" readonly>
    
    </form>
    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 orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    Originariamente inviato da br1
    Il titolo dice il contrario di quello che chiedi
    Hai ragione scusa.... quando ho postato ero stanco ed era anche un pò tardi... grazie x aver risposto anche così...

    se puoi, visto che vedo che sei moderatore, modificalo in:

    " Orario succ sempre maggiore di quello prec "

    anche per ottimizzare un'eventuale ricerca da parte di terzi con lo stesso problema...

    La funzione da te modificata va benissimo, ma ho un dubbio: se invece di chiamare i campi del form con lettere dalla A alla H, li chiamassi con altri nomi sarebbe lo stesso ?

    Ho provato con il mio form, ma non sembra lo stesso...

    codice:
    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">
    Grazie 1000
    "Ubi Maior, Minor Cessat"
    Domandare è lecito, rispondere è cortesia...
    A tutti è dovuta una risposta, comunque...

    “Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da orcim
    La funzione da te modificata va benissimo, ma ho un dubbio: se invece di chiamare i campi del form con lettere dalla A alla H, li chiamassi con altri nomi sarebbe lo stesso ?
    E certo che no... tra le altre incongruenze c'era anche il fatto che i campi di uscita non rispettassero il tema del questito... e che io ho adattato.
    Nello script che ho postato ci sono tutti gli elementi per adattarlo, ovviamente perdendo la semplicita' del ciclo...
    codice:
    function Calcola() {
    	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("DURATA_LOGISTICA").value = (y-x);
    		} else {
    			document.myForm.elements(cy).style.background = 'orange';
    		}
    	}
    // e di seguito tutti gli altri... :-)
    }
    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

  5. #5
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    Grazie x il chiarimento, ma c'è qualcosa che non funziona... ahimè...

    La pagina htm è pubblicata qui

    In pratica convalida gli orari inferiori all'orario precedente... prova ad inserire questa combinazione:

    A=10.30
    B=09.45 > DEVE BLOCCARE IL FORM
    C=11.00
    D=10.45 > DEVE BLOCCARE IL FORM
    E=12.00
    F=11.45 > DEVE BLOCCARE IL FORM
    G=13.00
    H=12.45 > DEVE BLOCCARE IL FORM

    Cosa sbaglio?
    Grazie
    "Ubi Maior, Minor Cessat"
    Domandare è lecito, rispondere è cortesia...
    A tutti è dovuta una risposta, comunque...

    “Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Lo script, a leggerlo con la dovuta attenzione, controlla che le differenze richieste nei campi di output (F-E, D-A, G-F, eccetera) siano rispettate.... se tutti gli orari devono essere progressivi devi combinare l'ultimo script con il primo, che di questa progressivita' ne teneva conto.

    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

  7. #7
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    Originariamente inviato da br1
    Lo script, a leggerlo con la dovuta attenzione, controlla che le differenze richieste nei campi di output (F-E, D-A, G-F, eccetera) siano rispettate.... se tutti gli orari devono essere progressivi devi combinare l'ultimo script con il primo, che di questa progressivita' ne teneva conto.

    ciao
    Grazie br1.

    Credo di aver capito e sembra funzionare... puoi dargli uno sguardo.

    Il link è sempre lo stesso
    "Ubi Maior, Minor Cessat"
    Domandare è lecito, rispondere è cortesia...
    A tutti è dovuta una risposta, comunque...

    “Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Con firefox non funziona da errore
    Errore: document.myform.elements is not a function
    File sorgente: http://www.pontifex.lazio.it/ajax/INDEX2.HTM
    Riga: 19
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    E' possibile; ma è uno script che funzionerà all'interno di una rete intranet aziendale dove si può utilizzare soltanto come browser IE e l'utente non è amministratore della macchina per cui non può nemmeno installare programmi diversi da quelli già installati di default.

    Piuttosto mi interessa sapere se ho ben interpretato i suggerimenti di br1.

    ciao e grazie.
    "Ubi Maior, Minor Cessat"
    Domandare è lecito, rispondere è cortesia...
    A tutti è dovuta una risposta, comunque...

    “Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero

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.