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

    Funzione per controllo orario hh:mm

    Ciao.

    Qualcuno può consigliarmi una funzione javascript con la quale si controlli che l'orario inserito nel campo "ora" del form non sia inferiore a due ore rispetto all'ora lato client?

    Cioè adesso le ore 14:50, nel form non posso inserire ad esempio 15:30 oppure 16:49, ma solo dalle ore 16:50 in poi.

    E' possibile?
    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

  2. #2
    ecco uno script simplerrimo... ci ho messo anche i secondi ma è opzionale.
    Devi comunque controllare che venga passata l'ora in maniera corretta.

    Inoltre, io ho considerato solo l'ora, ma se per esempio fossero le 23 il range accettabile andrebbe dall'1 del giorno dopo.

    Codice PHP:
    function checkhour(str)
    {
        var 
    splitted str.split(':'):
        var 
    minute parseInt(splitted[1]);
        var 
    hour parseInt(splitted[0]);
        var 
    second 0;
        if(
    splitted[2])
            
    second parseInt(splitted[2]);
        
        var 
    total second minute 60 hour 60 60;
        
        var 
    = new Date();
        
        var 
    nowsec d.getSeconds() + d.getMinutes() * 60 d.getHours() * 60 60;
        
        if(
    total nowsec 60 60)
            
    alert('NO');


  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Trasforma le ore in minuti...

    adesso = new Date();
    ora = (adesso.getHours())*60+adesso.getMinutes();

    pippo = document.mioForm.mioCampo.value.split(":");
    digitata = parseInt(pippo[0])*60+parseInt(pippo[1]);
    alert( digitata + " " + ora)
    if (digitata-ora<120) alert("errore");


    ciao

    ps: eventualmente devi gestire il cambio di data...
    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

  4. #4
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    Grazie, ma non riesco a renderla funzionante:

    codice:
    <html>
    
    <head>
    
    <script language="javascript">
    <!--
    
    
    function checkhour(str) 
    { 
        var splitted = str.split(':'); 
        var minute = parseInt(splitted[1]); 
        var hour = parseInt(splitted[0]); 
        var second = 0; 
        if(splitted[2]) 
            second = parseInt(splitted[2]); 
         
        var total = second + minute * 60 + hour * 60 * 60; 
         
        var d = new Date(); 
         
        var nowsec = d.getSeconds() + d.getMinutes() * 60 + d.getHours() * 60 * 60; 
         
        if(total - nowsec < 2 * 60 * 60) 
            alert('NO'); 
    }
    
    
    //-->
    </script>
    
    </head>
    
    <body>
    
    <form name="orario" method="POST" action="go.asp">
    
    <input type="text" name="orario" size="10" onClick="checkhour(this);">
    
    <input type="submit" value="Invia" name="B1">
    
    </form>
    </body>
    
    </html>
    Nemmeno questa:

    codice:
    <html>
    
    <head>
    
    <script language="javascript">
    <!--
    
    
    function checkhour(str) 
    { 
    adesso = new Date();
    ora = (adesso.getHours())*60+adesso.getMinutes();
    
    pippo = document.orario.ora.value.split(":");
    digitata = parseInt(pippo[0])*60+parseInt(pippo[1]);
    alert( digitata + " " + ora)
    if (digitata-ora<120) alert("errore");
    
    }
    
    
    //-->
    </script>
    
    </head>
    
    <body>
    
    <form name="orario" method="POST" action="go.asp">
    
    <input type="text" name="ora" size="10" onClick="checkhour(this);">
    
    <input type="submit" value="Invia" name="B1">
    
    </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

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,134
    Non l'ho testato ma secondo me entrambe le funzione vanno gestite con gli eventi all'onchange o all'onblur, se vuoi che funzioni direttamente da campo (input text) oppure con onclick associato ad un pulsante, ma come le hai scritte tu <input type="text" name="ora" size="10" onClick="checkhour(this);"> non potrà mai funzionare visto che dal momento che mi posiziono sul campo scatta onclick, ma non ho ancora scritto niente
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    Originariamente inviato da cavicchiandrea
    Non l'ho testato ma secondo me entrambe le funzione vanno gestite con gli eventi all'onchange o all'onblur, se vuoi che funzioni direttamente da campo (input text) oppure con onclick associato ad un pulsante, ma come le hai scritte tu <input type="text" name="ora" size="10" onClick="checkhour(this);"> non potrà mai funzionare visto che dal momento che mi posiziono sul campo scatta onclick, ma non ho ancora scritto niente
    grazie ho fatto come hai detto sostituendo l'evento onclick con l'evento onblur.

    la funzione suggerita da artorius restituisce l'errore allegato su questa riga:

    codice:
    var splitted = str.split(':');
    la funzione suggerita da br invece sembra funzionare...
    Immagini allegate Immagini allegate
    "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

  7. #7
    perchè devi chiamare checkhour sul valore dell'input non sul'input stesso:

    checkhour(this.value)

  8. #8
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    Gracias!
    "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

  9. #9
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Ciao sto provando la soluzione br1 e va bene.

    Ma se volessi controllare, oltre all'ora inserita, anche che la data di caricamento sia uguale alla data di oggi ed in questo caso bloccare l'invio del form, come devo fare?

    codice:
    <script language="javascript">
    <!--
    
    
    function checkhour(str) 
    { 
    adesso = new Date();
    ora = (adesso.getHours())*60+adesso.getMinutes();
    
    pippo = document.orario.ora.value.split(":");
    digitata = parseInt(pippo[0])*60+parseInt(pippo[1]);
    alert( digitata + " " + ora)
    if (digitata-ora<120) alert("errore");
    
    }
    
    
    //-->
    </script>

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 © 2026 vBulletin Solutions, Inc. All rights reserved.