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

时间:2015-08-06 09:47:17

标签: jquery twitter-bootstrap-3 bootstrap-datetimepicker

在解决the previous defaultDate issue后,我有一个新的。 JavaScript代码如下:

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

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

  

未捕获的TypeError:默认传递的defaultDate()日期无效   组件设置验证

On JSFiddle,这种行为更加陌生。首次加载时,通常不设置日期。在进一步重新加载时,它被设置,除了有时,如果你经常点击运行,它不是。对我来说这看起来像个错误,但由于我真的不懂JavaScript,我以为我会问......

1 个答案:

答案 0 :(得分:5)

此问题是由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