Ich habe zwei Datepicker-Kalender, einen für ein Startdatum und einen für ein Enddatum.
Was ich möchte, ist, das defaultDate des zweiten Datepickers dynamisch so einzustellen, dass es sechs Monate nach dem ersten liegt, wenn das erste Datum ausgewählt wird.
Ich weiß, wie man dem zweiten Datepicker das erste Datum meldet, aber ich weiß nicht, wie man dem ersten sechs Monate hinzufügt und es dann als Standarddatum des zweiten Datepickers hinzufügt
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 Deine Hilfe
Bearbeiten:
In datePicker existiert die Funktion zum Hinzufügen von sechs Monaten zu einem Datum: Sie trägt die Bezeichnung “+6M”. Ich möchte nur “+6M” zum ersten Datum hinzufügen und es als Standarddatum zum zweiten senden.
- Analysieren Sie die ausgewählte Datumszeichenfolge in ein JavaScript-Datumsobjekt.
- Benutzen
Date.getMonth()
und Date.setMonth()
um den Monat zu ändern. Letztere Funktion erhöht/verringert das Jahr bei Bedarf automatisch.
- Verwenden Sie die jQuery-Datumsauswahl
setDate
Methode zum Ändern des Datums des zweiten Datepickers (Einstellung der defaultDate
führt nicht zu den gewünschten Ergebnissen).
onSelect: function(dateText, instance) {
date = $.datepicker.parseDate(instance.settings.dateFormat, dateText, instance.settings);
date.setMonth(date.getMonth() + 6);
$(".secondcal").datepicker("setDate", date);
}
Demo hier
Um einem Datum 6 Monate hinzuzufügen
var second_date = new Date(date);
second_date.setMonth(second_date.getMonth()+6); //+6 is however many months
dann aktualisiere den Wert
$("#secondcal").val(second_date); //It is probably better to work with ID
Hier ist der Code, den ich verwende, um das maximale Datum eines zweiten Dialogs auf einen Monat nach dem ersten festzulegen. Sie würden stattdessen einfach das Standarddatum festlegen
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
});
.