Datetimepicker:默认值仅每隔一段时间设置一次

Datetimepicker: default value only set every other time

解决了,我又有新的了。 JavaScript代码如下:

$(function () {
    $('#datepicker').datetimepicker({
        useCurrent: false,
        maxDate: moment().toDate(),
        locale: 'de',
        defaultDate: moment().toDate(),
        format: 'DD.MM.YYYY'
    });
});

当我访问该页面时,没有设置默认日期。当我重新加载它时,默认日期已设置,并且无论我做什么都保持设置,直到我浏览到另一个页面然后 return 到表单;然后,默认日期 通常 未设置,尽管有时会设置。未设置时,日期选择器不起作用(点击输入框无效),控制台显示错误消息:

Uncaught TypeError: defaultDate() date passed is invalid according to component setup validations

On JSFiddle,行为更奇怪。第一次加载时,通常不会设置日期。在进一步重新加载时,它会被设置,除了有时,如果你点击 运行 足够频繁,它不会。对我来说这看起来像是一个错误,但由于我真的不知道 JavaScript,我想我会问...

此问题是由于 maxDatedefaultDate 完全 同一日期的限制引起的。这个错误是偶发的原因是因为在处理发生的日期之间偶尔会有几毫秒的延迟。如果不存在此延迟,则会出现错误。

要修复它,您可以手动将 maxDate 添加一秒以弥补任何处理时间差异。试试这个:

$(function () {
    var maxDate = moment().add(1, 'seconds').toDate();
    var defaultDate = moment().toDate();

    $('#datepicker').datetimepicker({
        useCurrent: false,
        maxDate: maxDate,
        locale: 'de',
        defaultDate: defaultDate,
        format: 'DD.MM.YYYY'
    });
});

Updated fiddle