Aggiungere n. giorni ad una data nel datepiker

otto9due

Utente Attivo
22 Feb 2014
591
25
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

  • Senza-titolo-1.png
    Senza-titolo-1.png
    295,3 KB · Visite: 362
Ultima modifica:
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);
 
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?
 
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
 
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

Discussioni simili