首页 > 解决方案 > 如果设置了 defaultDate,则链接的 Datetimepicker 不会更新

问题描述

我正在使用带有一对链接选择器的 datetimepicker。

在初始加载时,“start_date”应显示当前日期,“expiry_date”应显示“start_date + 30 天”。这按预期工作。However when a new 'start_date' is selected the expiry should always default to be 30 days ahead.

这就是我所拥有的:

$(function () {
        function plusCalendarMonthToDate(e) {
            return moment(e.date).add(30, 'days').millisecond(0).second(0).minute(0).hour(0)
        }
        defaultStartDate = new Date();
        $('#datetimepicker-start').datetimepicker({
            format: 'YYYY-MM-DD 00:00:00',
            minDate: defaultStartDate,
            defaultDate: defaultStartDate
        });
        $('#datetimepicker-expiry').datetimepicker({
            useCurrent: false,
            format: 'YYYY-MM-DD 00:00:00',
            minDate: $('#datetimepicker-start').val(),
            defaultDate: plusCalendarMonthToDate(defaultStartDate)
        });
        $("#datetimepicker-start").on("dp.change", function (e) {
            $('#datetimepicker-expiry').data("DateTimePicker").minDate(e.date);
            // when a start_date is selected, set the expiry to 30 days plus
            plusCalendarMonth = plusCalendarMonthToDate(e);
            $('#datetimepicker-expiry').data("DateTimePicker").defaultDate(plusCalendarMonth);
        });
        $("#datetimepicker-expiry").on("dp.change", function (e) {
            $('#datetimepicker-start').data("DateTimePicker").maxDate(e.date);
        });
    });

当我选择新的 start_date 时,expiry_date 不会更新。我认为这是因为我已经在初始化中设置了“defaultDate”,如果我删除它,那么该功能就会起作用,但是当我失去了 expiry_date 的初始默认值时。如何覆盖初始的 defaultDate?

标签: javascriptdatetimepicker

解决方案


似乎解决方案是使用'date()'而不是'defaultDate()':

$('#datetimepicker-expiry').data("DateTimePicker").date(plusCalendarMonth)

推荐阅读