Visualizzazione dei risultati da 1 a 9 su 9

Discussione: problema con newDate()

  1. #1

    problema con newDate()

    ho fatto il seguente controllo per un modulo di immissione di vari campi tra i quali la data di arrivo e quella di partenza (il modulo si chaima compila):


    function valida()
    {


    if (document.compila.GA.value == "")
    {
    alert("Non hai inserito il giorno di arrivo");
    return false;
    }
    if (document.compila.MA.value == "")
    {
    alert("Non hai inserito il mese di arrivo");
    return false;
    }
    if (document.compila.AA.value == "")
    {
    alert("Non hai inserito l'anno di arrivo");
    return false;
    }

    {
    ga = document.compila.GA.value;
    ma = document.compila.MA.value;
    aa = document.compila.AA.value;


    var now = new Date(); // data odierna in millisecondi
    var arrivo = new Date(aa, parseInt(ma)-1, ga);


    if (now>arrivo) {
    alert("Attenzione, la data di arrivo è precedente a quella di oggi");
    return false;
    }
    }

    if (document.compila.GP.value == "")
    {
    alert("Non hai inserito il giorno di partenza");
    return false;
    }
    if (document.compila.MP.value == "")
    {
    alert("Non hai inserito il mese di partenza");
    return false;
    }
    if (document.compila.AP.value == "")
    {
    alert("Non hai inserito l'anno di partenza");
    return false;
    }


    {

    ga = document.compila.GA.value;
    ma = document.compila.MA.value;
    aa = document.compila.AA.value;
    gp = document.compila.GP.value;
    mp = document.compila.MP.value;
    ap = document.compila.AP.value;


    if (aa>ap) {
    alert("Attenzione, l'anno di partenza è precedente a quello di arrivo");
    return false;
    }
    if (aa==ap && ma>mp) {
    alert("Attenzione, il mese di partenza è precedente a quello di arrivo");
    return false;
    }
    if (aa==ap && ma==mp && ga>gp) {
    alert("Attenzione, il giorno di partenza è precedente a quello di arrivo");
    return false;
    }



    }

    ...

    lo script controllla sia la che i campi siano riempiti sia che la data di arrivo sia precedente a quella di partenza.

    PROBLEMA:

    sul controllo se la data di arrivo è precedente a quella di oggi ho verificato che se immetto una data compresa tra il 1 agosto 2003 e il 31 settembre 2003 mi dice ugualmente che è precedente a quella di oggi.... per tutte le altre date funziona benissimo (almeno per quelle che ho provato ma sono sicuro che testando a fondo verrebebro fuori altre magagne)..
    chiaramente sbaglio qualcosa...
    chi mi sa dire cosa?

    [...]

    var now = new Date(); // data odierna in millisecondi
    var arrivo = new Date(aa, parseInt(ma)-1, ga);


    if (now>arrivo) {
    alert("Attenzione, la data di arrivo è precedente a quella di oggi");
    return false;
    }

    [...]

    grazie per ogni eventuale delucidazione.

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    prova così
    if (now.getTime() > arrivo.getTime())

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    C'e` una graffa di troppo: le variabili definite all'inetrno di un blocco (delimitato dalle graffe) hanno scope solo all'interno del blocco.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    purtroppo il problema rimane, con ambedue le soluzioni..
    non capisco...
    il bello è che lo fa solo se inserisco la data di agosto e settmbre 2003...
    mah...
    grazie lo stesso...

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Allora e` un problema di parseInt().

    Mettici anceh la radice (secondo parametro), altrimenti se vede il primo carattere 0 prende i dati come ottali e chiaramente 08 e 09 nnsono definiti come ottali.

    Esempio:
    parseInt(xxx, 10);

    Cercatelo tu nel tuo codice.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Utente bannato
    Registrato dal
    Apr 2003
    Messaggi
    1,119
    prova non mettendo questo
    codice:
    if (aa>ap) { 
    alert("Attenzione, l'anno di partenza è precedente a quello di arrivo"); 
    return false; 
    } 
    if (aa==ap && ma>mp) { 
    alert("Attenzione, il mese di partenza è precedente a quello di arrivo"); 
    return false; 
    } 
    if (aa==ap && ma==mp && ga>gp) { 
    alert("Attenzione, il giorno di partenza è precedente a quello di arrivo"); 
    return false; 
    }
    ma questo:
    codice:
    partenza=new Date(ap,mp,gp)
    if (partenza < arrivo)
    {
    alert("Attenzione, la data di partenza è precedente a quella di arrivo"); 
    return false; 
    }

  7. #7
    Utente bannato
    Registrato dal
    Apr 2003
    Messaggi
    1,119
    ops... non era il tuo problema...
    prova lo stesso però

  8. #8
    ho risolto così...

    {
    ga = document.compila.GA.value;
    ma = document.compila.MA.value;
    aa = document.compila.AA.value;

    ma = parseInt(ma, 10);

    var now = new Date(); // data odierna in millisecondi
    var arrivo = new Date(aa, parseInt(ma)-1, ga);

    if (now.getTime() > arrivo.getTime()) {

    alert("Attenzione, la data di arrivo è precedente a quella di oggi");
    return false;
    }
    }

    grazie michele.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    E` corretto, ma se vuoi essere sicuro, correggi cosi`:

    var arrivo = new Date(aa, parseInt(ma,10)-1, ga);


    Ciao
    Michele
    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.