Aggiungere n. giorni ad una data nel datepiker

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Nel mio caso al click di una data nel primo datepiker si modifica il valore impostato per il minDate del secondo datepiker. Ora però ho un problema, vorrei che la mindate del secondo datepiker sia di almeno un giorno maggiore rispetto al primo datepiker.

Tramite alcuni esempi trovati online, ho scritto quanto potete vedere sotto ma non sono ancora riuscito nell'intento.

Sopratutto credo che la causa sia da ricercare nella stringa che ho commentato con il // NON FUNZIONA perchè credo non effettui la somma dei 3 giorni alla data raccolta nel primo campo datepiker.

Codice:
/* Datapiker */

jQuery(document).ready(function ($) {
    var now = new Date();
    var today = now.getDate() + '/' + (now.getMonth() + 1) + '/' + now.getFullYear();
    $('#datepicker').val(today);
});

/* Datapiker 1*/

jQuery(document).ready(function ($) {
    var now = new Date();
    var today = (now.getDate() + 1) + '/' + (now.getMonth() + 1) + '/' + now.getFullYear();
    $('#datepicker1').val(today);
});

/* Datapiker format*/
jQuery(document).ready(function ($) {
    // Setter
    $("#datepicker, #datepicker1").datepicker({
        // selezioni alcuni giorni della settimana
        /* beforeShowDay:
                function (dt) {
                    return [dt.getDay() == 0 || dt.getDay() == 6, ""];
                },*/
        beforeShowDay:
        function (dt) {
            return [dt.getDay() == 0, ""];
        },
        "dateFormat": "dd/mm/yy",
        "showAnim": "slideDown",
        "showButtonPanel": true,
        "firstDay": 1,
        "minDate": 0
    });
});

// Al click modifico la seconda data
jQuery(document).ready(function ($) {
    $("#datepicker").change(function(){
    //Aggiungo 3gg alla data selezionata
        var currentDate = $(this).datepicker('getDate', '+3d'); // NON FUNZIONA
        $("#datepicker1").datepicker('setDate', currentDate);
        $("#datepicker1").datepicker( "destroy" ); //distruggo
        $("#datepicker1").datepicker({ beforeShowDay: function (dt) {return [dt.getDay() == 0, ""];},minDate: currentDate, maxDate: "", dateFormat: "dd/mm/yy", showButtonPanel: true, "firstDay": 1 });//nuovo datepiker con nuova data
    });
});
Nel mio caso il datepiker mostra solo le domeniche, ma se un cliente arriva domenica non può andarsene la stessa domenica ecco il problema.. Qualcuno ha un'idea?
 

Allegati

Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, è molto confuso il codice, comunque prova cosi
Codice:
//Aggiungo 3gg alla data selezionata
var currentDate = $(this).datepicker('getDate', '+3d');
currentDate.setDate(currentDate.getDate() + 3);
 

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Intanto grazie mille.
Ottimo funziona ( come sempre direi :) ). Non ho ben capito come si svolge l'esecuzione del codice e perchè mette
Codice:
('getDate', '+3d');
e poi..
Codice:
(currentDate.getDate() + 3);
Quasi come se sommasse due volte i 3gg?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
in realtà il "+3d" non fa niente, non conosco bene i parametri della funzione datepicker() ma se provi a toglierlo dovrebbe restituirti lo stesso risultato
 

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Hai perfettamente ragione, infatti ho fatto un pò di ricerche e nella pagina ufficiale http://api.jqueryui.com/datepicker/#utility-formatDate dove vengono spiegati i metodi e le opzioni attivabili, non è menzionato nulla del genere, anzi dice esattamente: "This method does not accept any arguments" ovvero che il metodo non accetta alcun argomento.

Provando così funziona ugualmente:
Codice:
var currentDate = $(this).datepicker('getDate');
        currentDate.setDate(currentDate.getDate() + 7);
        $("#datepicker1").datepicker('setDate', currentDate);
Grazie ancora. A presto.
 
  • Like
Reactions: criric