Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    soccorso su script per controllo precedenza tra date

    Ciao a tutti,
    nella pagina a seguire ho uno script che dovrebbe verificare che tra due date (inserite nel formato gg/mm/aaaa) la seconda non sia antecedente slla prima.
    Con buona parte delle date funziona ma mi sono accorta che se utilizzo 05/05/2004 come data di inizio e 07/09/2004 come data finale, ricevo il messaggio inatteso di errore nella precedenza.

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Documento senza titolo</title>
    </head>
    <script language="JavaScript" type="text/javascript">
    <!--
    function ControlloDate(f, campodata1, campodata2, nomecampo1, nomecampo2) {
     var data1=f.elements[campodata1].value;
     var data2=f.elements[campodata2].value;
     if (data1=="" || data2=="") return true;
     var oggetto1=new Date(parseInt(data1.substr(6)), parseInt(data1.substr(3, 2)), parseInt(data1.substr(0, 2)));
     var oggetto2=new Date(parseInt(data2.substr(6)), parseInt(data2.substr(3, 2)), parseInt(data2.substr(0, 2)));
     if (oggetto2-oggetto1<0) {
      alert("Attenzione, il valore del campo '"+nomecampo2+"' è antecedente quello del campo '"+nomecampo1+"'.");
      f.elements[campodata2].focus();
    	return false;
     }
     return true;
    }
    //-->
    </script>
    
    <body>
    <form name="form1" method="post" action="" onSubmit="return (ControlloDate(this, 'start_date', 'end_date', 'Data di Inizio', 'Data di Fine'));">
      
    
    
        <input name="start_date" type="text" id="start_date" size="10" maxlength="10">
      Data inizio </p>
      
    
    
        <input name="end_date" type="text" id="end_date" size="10" maxlength="10">
      Data fine</p>
      
    
    
        <input type="submit" name="Submit" value="Invia">
      </p>
    </form>
    
    
    </p>
    </body>
    </html>
    Chi sa darmi delucidazioni in proposito?
    Grazie,
    AleX

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ci possono essere errori con il parseInt. Specifica la base di trasformazione (di default parseint legge ottale se i numeri iniziano con 0):

    parseInt(data1.substr(3,2),10)
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Caspita, funziona
    Grande Mich_ , intervento perfetto , sei un fenomeno...
    Grazie e alla prossima,
    AleX

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    C'e` un altro errore. Prova a vedere come scrive le date se usi:
    alert(oggetto1.toLocaleString() ).

    Nella trasformazione in data, gennaio vale 0 e dicembre 11.
    Quindi:
    var oggetto1 = new Date(parseInt(data1.substr(6)), parseInt(data1.substr(3,2),10)-1, parseInt(data1.substr(0, 2),10));
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Grazie anche per questa indicazione, ma credo di non aver capito a quale errore si andrebbe incontro.
    Mi puoi fare un esempio di due date per le quali il controllo dovrebbe fallire senza la modifica da te introdotta?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non so.

    Prova comunque a vedere le date:
    10 gen 2004 e 10 dic 2004

    In teoria dovrebbe prenderle come 10 febbraio e 10 gennaio 2005, ma non e` detto.

    E poi il 31 gen verrebbe trasformato in 3 marzo (o 2 se l'anno e` bisestile).

    Prova a vedere con l'alert che ti avevo proposto, oppure con questo (da mettere dopo la trasformazione della date e prima del confronto):
    alert("controllo: "+oggetto1.toLocaleString()+" e "+oggetto2.toLocaleString());
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.