Pagina 1 di 6 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 52
  1. #1
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    105

    La data deve essere di x giorni superiore alla data odierna

    Ho un form dove attraverso un calendario si inserisce la data di "partenza".
    voglio inserire un controllo affinchè si possano selezionare solo date successive a x giorni la data odierna.
    Ad esempio se oggi è il 11/02/2011 le date inseribili partono dal 11/04/2011, con x=60.

    La funzione che utilizzo è la seguente:

    <script language="JavaScript">
    function verifForm(formulaire)
    {
    if(formulaire.data1.value < dzien + "/" + miesiac + "/" + rok) alert('Attenzione! La data di partenza deve essere successiva di 2 mesi a quella odierna.'); else
    formulaire.submit();
    }
    </script>

    dove:
    data1 è il nome del campo che fa riferimento ad un calendario e le variabili
    dzien + "/" + miesiac + "/" + rok sono state così definite

    <script type="text/javascript" language="JavaScript">
    <!--
    var data = new Date(document.lastModified);
    var dzien = data.getDate();
    var miesiac = data.getMonth() + 1;
    var rok = (data.getFullYear ? data.getFullYear() : data.getYear());
    if (dzien < 10) dzien = "0" + dzien;
    if (miesiac < 10) miesiac = "0" + miesiac;
    if (data != 0) document.write(dzien + "/" + miesiac + "/" + rok);
    else document.write("Data sconosciuta!");
    //-->
    </script>

    Il problema è che il controllo avviene solo se inserisco una data inferiore a quella odierna.
    Come posso fare? Non deve errere troppo difficile, ma sono alle prime armi e non riesco.
    Grazie anticipatamente.

  2. #2
    Utente bannato
    Registrato dal
    Dec 2010
    Messaggi
    297
    IN PHP ti sapevo aiutare ma in javascript sono negato

  3. #3
    codice:
    <script>
    var data=new Date();
    var dataFuturoMassima=new Date();
    var dataPassatoMinima=new Date();
    dataFuturoMassima.setDate( data.getDate() +30); //getDate setta i GIORNI, per cui puoi aggiungerci il limite massimo di tua scelta.
    dataPassatoMinima.setDate( data.getDate() -30); //stessa cosa, ma setta il limite a 30 giorni prima
    
    //ora, per verificare che una data sia in quel range:
    
    var unadata=new Date();
    unadata.setDate(15); unadata.setMonth(0/*0=gennaio*/); unadata.setFullYear(2011);//setta qui per i tuoi test, ad esempio prova a metter 9 anzichè 15
    
    if( unadata.getTime()>=dataPassatoMinima.getTime() && unadata.getTime()<=dataFuturoMassima.getTime() ){alert('ok');}
    else{alert('fuori range');}
    </script>

  4. #4
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    105
    GRAZIE 1000, ma sono un po' asino e non rieso a farla girare. ho inserito la tua funzione all'inerno dell'head, ma non funziona, inoltre quando aggiorno la pagina mi esce un mesaggio JS che mi dice "OK".

  5. #5
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    105
    NIENTE...non riesco...
    rispetto a quanto ho già fatto...che modifiche dovrei apportare?
    Il foglio html su cui sto lavorando contiene una parte che dice: "si ricorda che oggi (ed esce la data di oggi) puoi prenotare a partire dal giorno (ed esce la data di oggi + 2 mesi). Forse è questo che crea casini?
    E poi, io la data nel campo preposto neanche la inserisco, che viene fuori il messaggio o di "ok" o di " fuori range" appena ricarico la pagina.
    E comunque grazie di nuovo Marcello, sono sicuro che sto dicendo un sacco di stupidate..però questo mi viene da dire...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719
    Ti spunta ok perché funziona xD
    In prarica, essendo oggi 11 feb e quello settato è 15 gen, siamo nel limite dei 30 gg previsti. Se oggi era 15 feb allora ti spuntava fuori range.

  7. #7
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    105
    ma quindi ogni mese devo cambiare la data, o meglio il mese da cui parte?
    a me servirebbe un semplice controllo che la data inserita dall'utente sia superiore a tot giorni la data odiena...una funzione del tipo
    if (datainserita < datadioggi + 60giorni) allert ('devono passare almeno 2 mesi dalla data attuale!.')..
    booo..sicuramente sono io che non capisco...abbiate un po di pazienza

  8. #8
    Meglio usare questa funzione per il tuo problema: Javascript Date Verify Whether A Date Falls Within Any Given Time Range (appena messa online per cui starà in beta un paio di giorni o giù di lì...)

    Meglio usare quella perchè il costruttore dell' oggetto Date già si incarica di settare tutte le proprietà di una data nella maniera corretta una volta stabilito nel costruttore e dal costruttore quanto tempo aggiungere e secondo che unità di misura (anni, mesi, giorni, ore, minuti, secondi?).

    Questo non è affatto certo che accada usando i metodi relativi come da me ipotizzato in un primo momento.

    Cioè, una espressione come
    dataPassatoMinima.setDate( data.getDate() -30);
    non ti setterà anche il mese e anno corretti - e questo perchè... ti farà un cast avente come unità di misura il numero di giorni del mese ! Un concetto non a tutti noto e che anche io non ricordavo più in un primo momento.

    In altre parole se tu setti un time range dicendo: meno sette giorni, e la data di riferimento è il primo gennaio 2011, ti potresti ritrovare con una data "aggiornata" che non ti dice che sette giorni in meno dal primo gennaio 2011 sarebbe il 25 dicembre 2010 ma che ti dice che sarebbe il... 25 gennaio 2011: ti va indietro di sette giorni, sì, ma dentro lo stesso mese!

    Per questo non bisogna mai usare i metodi, ma il costruttore per settare somme o sottrazioni di date. La funzione di cui sopra appena messa online tiene conto proprio di questo.

  9. #9
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    105
    Grazie Alberto...il problema da te sollevato mi è già capitato ed effettivamente non l'ho risolto...tuttavia, un po' sono scarsetto in inglese, un po' sono principiante con JS, così su due piedi non riesco. Tra l'altro, non ho ancora mangiato e la mia compagna si stà lamentando, per cui ti saluto e spero di ritrovarti al più presto.
    GRAZIE DI NUOVO...cercherò di capire quello che mi hai suggerito (l'ho copiato su un file word nel caso non dovessi più ritrovarlo)..cia e grazie di nuovo
    Federico

  10. #10
    quando sei di nuovi qui prova a postare l' html da cui chiami la funzione
    verifForm(formulaire)
    sarà un pulsante, un qualcosa. Ci vorrebbero quei codici se proprio vuoi un riadattamento totale alla tua esigenza .

    comunque ti merita, quando puoi, dedicarti a studiare un po' di javascript (aiutarti quando ancora conosci così poco non è facilissimo).
    Anche leggere una oretta un libro o un tutorial di javascript ogni due giorni può andare.
    Certo, dipende da quel che vuoi fare. Se devi solo pubblicare dei contenuti ogni tre mesi, no; se invece hai in programma di gestire un tuo sito in maniera più attiva e/o quasi giornaliera, allora sì conoscere meglio javascript servirebbe.

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.