【问题标题】:Not able to set older date then current if minDate property is set to moment() using Bootstrap Datetimepicker如果使用 Bootstrap Datetimepicker 将 minDate 属性设置为 moment(),则无法将较旧的日期设置为当前日期
【发布时间】:2017-10-23 13:05:08
【问题描述】:

我的要求是我不想让用户从日期选择器中选择过去的日期(这是使用 minDate: moment() 完成的)。但我必须在文本框和日期选择器下拉列表中显示过去的日期。

例如,今天是 2017 年 10 月 23 日,所以我可以选择今天和未来的任何日期。但在这种情况下,很少有日期已经过去(即 2017 年 3 月 3 日,2016 年 11 月 12 日)这些日期没有显示在文本框中,由于 minDate: moment() 功能被自动清除放。如果我删除此属性,那么我可以显示该日期

我在将 Bootstrap 版本 3.0.0 迁移到 4.17.42 后遇到了这个问题。 以下是代码:

$('#datepicker').datetimepicker({
        format: 'YYYY/MM/DD',
        ignoreReadonly: true,
        defaultDate: moment(GetCurrentDate(), "DD-MM-YYYY"),
        minDate: moment()           //set a minimum date
});

使用此 DateTimePicker:http://eonasdan.github.io/bootstrap-datetimepicker/

【问题讨论】:

    标签: jquery bootstrap-datetimepicker eonasdan-datetimepicker


    【解决方案1】:

    为此,您必须将keepInvalid: true 设置为选项,因为默认情况下keepInvalid 为false,这样minDate 选项就不会覆盖之前的日期。

    这样,之前在选择器上的任何日期都应该保留在那里。

    所以你的代码应该是这样的:

    $('#datepicker').datetimepicker({
        format: 'YYYY/MM/DD',
        ignoreReadonly: true,
        defaultDate: moment(GetCurrentDate(), "DD-MM-YYYY"),
        minDate: moment(),           //set a minimum date
        keepInvalid: true,
    });
    

    现在,如果您不使用 minDate 选项,您必须设置 useCurrent: false 这样不会有问题。

    我在将 Bootstrap 版本 3.0.0 迁移到 4.17.42 后遇到了这个问题

    我建议您升级到最新版本4.17.47 已经进行了一些修复

    【讨论】:

    • 完美,现在我可以在文本框中看到过去的日期(使用 keepInvalid: true 选项)。 但问题是当我点击选择器图标时,日历弹出窗口不会显示所选日期,它显示当前日期为选中。
    • 那是因为 defaultDate 但如果您将默认日期设置为最后一个日期,这将引发 TypeError as per documentationminDate 将覆盖该选择,目前我没有工作那
    猜你喜欢
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 2013-01-26
    • 1970-01-01
    相关资源
    最近更新 更多