6

我有两个日期选择器日历,一个用于开始日期,另一个用于结束日期。

我想要的是动态设置第二个日期选择器的 defaultDate 比第一个日期晚六个月,当第一个日期被选中时。

我知道如何将第一个日期报告给第二个日期选择器,但我不知道如何将六个月添加到第一个日期然后将其添加为第二个日期选择器的默认日期

这是我的代码:

$(".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"
});

非常感谢你的帮助

编辑:

在 datePicker 中,存在添加六个月到日期的函数:它被标记为“+6M”。我只想将“+6M”添加到第一个日期并将其作为默认日期发送到第二个日期。

4

3 回答 3

11
  1. 将选定的日期字符串解析为 JavaScript 日期对象。
  2. 使用Date.getMonth()Date.setMonth()更改月份。如有必要,后一个功能会自动增加/减少年份。
  3. 使用 jQuery datepicker 的setDate方法来更改第二个 datepicker 的日期(设置defaultDate不会给你想要的结果)。
onSelect: function(dateText, instance) {
    date = $.datepicker.parseDate(instance.settings.dateFormat, dateText, instance.settings);
    date.setMonth(date.getMonth() + 6);
    $(".secondcal").datepicker("setDate", date);
}

演示在这里

于 2012-06-21T13:57:23.510 回答
5

将 6 个月添加到日期

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

然后更新值

$("#secondcal").val(second_date);  //It is probably better to work with ID
于 2012-06-21T13:20:47.660 回答
0

这是我用来将第二个对话框的最大日期设置为比第一个晚一个月的代码。所以你只需设置默认日期

   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
   });
于 2012-06-21T12:05:51.733 回答