2012-06-21 21 views
6

Ich habe zwei Datepicker-Kalender, einen für ein Startdatum und einen anderen für ein Enddatum.jQuery UI Datepicker: 6 Monate zu einem anderen Datepicker hinzufügen

Was ich will, ist dynamisch das DefaultDate des zweiten Datepicker auf sechs Monate später als das erste, wenn das erste Datum ausgewählt wird.

Ich weiß, wie das fisrt Datum mit dem zweiten Datepicker zu berichten, aber ich weiß nicht, wie zu den ersten sechs Monaten hinzuzufügen dann fügen Sie es als defaultdate des zweiten picker

Hier ist mein Code:

$(".firstcal").datepicker({ 
    dateFormat: "dd/mm/yy", 
    onSelect: function (dateText, inst) { 
     var date = $.datepicker.parseDate('dd/mm/yy', dateText); 
     var $sec_date = $(".secondcal"); 
     $sec_date.datepicker("option", "defaultDate", date); 
    } 
}); 
$(".secondcal").datepicker({ 
    dateFormat: "dd/mm/yy" 
}); 

vielen Dank für Ihre Hilfe

Edit:

In picker, die Funktion 6 Monate zu addieren, um ein Datum vorhanden ist: es ist labele d "+ 6M". Ich möchte nur „+ 6M“ zum ersten Termine hinzufügen und es als Standard-Datum auf den zweiten senden.

Antwort

7
  1. Analysiert die ausgewählte Datum in ein JavaScript Datumsobjekt Verwenden Sie Date.getMonth() und Date.setMonth(), um den Monat zu ändern. Die letztere Funktion erhöht/dekrementiert das Jahr bei Bedarf automatisch.
  2. Verwenden Sie die Methode setDate von jQuery datepicker, um das Datum des zweiten Datepickers zu ändern (die Einstellung defaultDate gibt Ihnen nicht die gewünschten Ergebnisse).
onSelect: function(dateText, instance) { 
    date = $.datepicker.parseDate(instance.settings.dateFormat, dateText, instance.settings); 
    date.setMonth(date.getMonth() + 6); 
    $(".secondcal").datepicker("setDate", date); 
} 

Demo here

+0

Danke Salman A! Perfekt ! –

0

Hier ist der Code, den ich verwende, um das maximale Datum eines zweiten Dialogs auf einen Monat später als das erste festzulegen. Sie würden also nur festgelegt Standarddatum statt

var beginsDate=$('#dlg_begins').datepicker('getDate'); 
    var monthMillisec=30*24*60*60*1000; 
    var maxDate=new Date(); 
    maxDate.setTime(beginsDate.getTime() + monthMillisec); 

    $('#dlg_expires').datepicker('option', 
    { 
     'maxDate':maxDate, 
     'minDate':beginsDate 
    }); 
+0

Dank Matt, Es hilft mir, aber teilweise: wegen jeden Monat nicht die gleiche Menge an Tagen hat, ist das Ergebnis falsch. Wenn ich 15778463000 milliseonds hinzufügen (Hexe ist 182,62 Tage), stellen die erste Juli den 30. Dezember statt dem ersten Januar –

2

Hinzufügen 6 Monate zu einem Datum

var second_date = new Date(date); 
second_date.setMonth(second_date.getMonth()+6); //+6 is however many months 

dann aktualisieren den Wert

$("#secondcal").val(second_date); //It is probably better to work with ID