Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Prenotazioni on-line e campi data "automatici"

    Salve,
    Ho questa porzione di codice JavaScript applicato al textfield "dScal":
    codice:
    onchange="frmBooking.dEcal.value=frmBooking.dScal.value"
    Come si vede, al cambiare del valore di "dScal", il campo "dEcal" assume lo stesso valore.

    Fin qui nessun problema...
    Ora, i due campi contengono date in frmato gg/mm/aaaa, e la cosa si complica: mi piacerebbe che, al variare di "dScal", il campo "dEcal" assuma il valore di "dScal + 1 giorno".

    Quindi, se dScal = 15/06/2006, dEcal dovrebbe automaticamente assumere il valore di 16/06/2006 (una cosa che si trova comunemente nei siti di prenotazioni on-line: scegliendo la data di inizio, la data di fine viene automaticamente settata a "data di inizio + 1 gg")

    Ehm... come si fa?
    Grazie in anticipo per le risposte!
    Home: http://www.ivansweb.com
    Le mie applicazioni gratuite in ASP
    · IWGallery
    · IWNewsletter
    · IWMessenger
    · IWGuestbook

  2. #2
    prova a splittare la stringa data, prendere le prime due cifre ed aggiungergli 1


    //creo un array lungo tre con gg mm aa
    var data_split = (frmBooking.dScal.value).split("/");
    //estrggo il valore numerico
    var giorno_dopo = eval(Integer.parseInt(data_split[0])+1);
    //ricreo la data in formato stringa
    var data_join = giorno_dopo+"/"+data_split[1]+"/"+data_split[2];
    //assegno il valore
    frmBooking.dEcal.value=data_join;
    //ovvamente aggiungerai un controllo del tipo se giorno=31 vai a mese dopo, 28 febbraio, eccetra...


    se usi questo script ti invito ad aggiungere un commento in fondo con scritto:
    //Created By SpinaCaper (mailto:spina_caper@hotmail.it)
    grazie

    Buon Lavoro

    SpinaCaper

  3. #3
    ..Ammappa che complicato (e ancora non c'è il controllo!) VVoVe:
    Qualcosa di più semplice non è proprio fattibile?

    spina_caper, grazie comunque
    Home: http://www.ivansweb.com
    Le mie applicazioni gratuite in ASP
    · IWGallery
    · IWNewsletter
    · IWMessenger
    · IWGuestbook

  4. #4
    questo è quello che mi è venuto in mente

    altrimenti prova a manipolare la stringa con il formato Date() ma penso sia peggio

  5. #5
    Spulciando su Google sono riuscito a trovare consigli per comporre la mia funzione: eccola qua:
    codice:
    <script type="text/javascript">
    function addDate() {
    var _a = form1.FromDate.value.split("/");
    pDate=new Date(_a[2],_a[1]-1,_a[0]);
    pDate.setTime(pDate.getTime()+1*86400000);
    szDate=pDate.getDate()+"/"+(pDate.getMonth()+1)+"/"+pDate.getFullYear();
    form1.ToDate.value = szDate;
    }
    </script>
    Tuttavia, nel caso di giorni e mesi, mi restituisce l'output ad una cifra, nonostante l'input sia a due; ad es. 08/06/2006 mi restituisce 9/6/2006 anzichè 09/06/2006
    Ehm... se non chiedo troppo, come posso fare ad evitare questo inconveniente?
    Home: http://www.ivansweb.com
    Le mie applicazioni gratuite in ASP
    · IWGallery
    · IWNewsletter
    · IWMessenger
    · IWGuestbook

  6. #6
    la funzione è perfetta. funziona così: per il computer la data è un numero, quindi lui ci aggiunge uno e riconverte in data

    per il tuo problema prova questa funzione


    function zeri(data_finale){
    var d = data_finale.split("/");
    for (i=0;i<data_finale.lenght(); i++){
    if(d[i].lenght()==1){
    d = "0"+d;
    }
    }
    var data_f= d.join("/");
    return data_f;
    }


    non sono sicuro che lenght() si scriva proprio così, dovresti provare lenght o length ecc..

    non l'ho provata vedi te se funziona

  7. #7
    ehm... con JavaScript sono negatissimo: come faccio ad integrare le due funzioni?
    Home: http://www.ivansweb.com
    Le mie applicazioni gratuite in ASP
    · IWGallery
    · IWNewsletter
    · IWMessenger
    · IWGuestbook

  8. #8
    questa è la funzione completa e corretta, quella di prima conteneva un po' di errori


    function addDate(data) {
    var _a = data.split("/");
    pDate=new Date(_a[2],_a[1]-1,_a[0]);
    pDate.setTime(pDate.getTime()+1*86400000);
    szDate=pDate.getDate()+"/"+(pDate.getMonth()+1)+"/"+pDate.getFullYear();
    var d = szDate.split("/");
    for (i=0;i<d.lenght(); i++){
    if(d[i].lenght()==1){
    d[i] = "0"+d[i];
    }
    }
    var data_f= d[0]+"/"+d[1]+"/"+d[2];
    //return data_f;
    form1.ToDate .value = data_f;
    }


    questa sostituisce il valore di form1.ToDate;

    al posto di form1.ToDate metti il nome del campo che ti interessa preceduto da document.all.nome_del_campo

    quindi va richiamata su un on change del campo dove l'utente immette la data.

    sarà una cosa del genere:
    <input type="text" onChange="addDate(this.value)" ..../>

    fammi sapere se qualcosa non va ...

    ...fino alle 5 e mezzo sono a "lavoro"

    SpinaCaper

  9. #9
    Grazie SpinaCaper!
    Allora, ho sostituito "lenght" con "length" e ho adottato la funzione:
    codice:
    <script type="text/javascript">
    function addDate(data) {
    var _a = data.split("/");
    pDate=new Date(_a[2],_a[1]-1,_a[0]);
    pDate.setTime(pDate.getTime()+1*86400000);
    szDate=pDate.getDate()+"/"+(pDate.getMonth()+1)+"/"+pDate.getFullYear();
    var d = szDate.split("/");
    for (i=0;i<d.length(); i++){
    if(d[i].length()==1){
    d[i] = "0"+d[i];
    }
    }
    var data_f= d[0]+"/"+d[1]+"/"+d[2];
    //return data_f;
    form1.ToDate.value = data_f;
    }
    </script>
    e sulla pagina ho messo questi:
    codice:
    <input name="FromDate" type="text" id="FromDate" onchange="addDate(this.value);"/>
    <input name="ToDate" type="text" id="ToDate" />
    Tuttavia mi dà un errore alla riga:
    codice:
     for (i=0;i<d.length(); i++){
    con la scritta "Prevista funzione" (su IE)
    mentre Firefox mi dice che "d.length" non è una funzione...

    EDIT: ho tolto le parentesi a d.length() e funziona!!!
    Home: http://www.ivansweb.com
    Le mie applicazioni gratuite in ASP
    · IWGallery
    · IWNewsletter
    · IWMessenger
    · IWGuestbook

  10. #10
    quindi tutto a posto??

    bene



    ciao

    SpinaCaper

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.