【问题标题】:Set month which opens from Bootstrap 3 Datepicker设置从 Bootstrap 3 Datepicker 打开的月份
【发布时间】:2015-04-01 03:28:57
【问题描述】:

我正在使用 Bootstrap 3 日期选择器:http://eonasdan.github.io/bootstrap-datetimepicker/

我已将 minDate 设置为未来,但是当我打开 datepicker 时,它会显示当前月份,即使我无法选择该月份的任何日期。如果当前月份不可用,我希望 datepicker 会打开第一个可能的月份。我怎么能这样做?

我的初始化代码:

$("#mySelector").datetimepicker({
    minDate: new Date(2015,3,12),
    maxDate: new Date(2015,3,15),
    pickTime: false,
    useCurrent: false,
    useStrict: true
});

【问题讨论】:

    标签: jquery twitter-bootstrap-3 datepicker


    【解决方案1】:

    使用defaultDate 选项

    $("#mySelector").datetimepicker({
        defaultDate: new Date(2015,3,12),     // <---- Look here
        minDate: new Date(2015,3,12),
        maxDate: new Date(2015,3,15),
        pickTime: false,
        useCurrent: false,
        useStrict: true
    });
    

    如果需要清除输入字段,可以将日期设置为空(旧版本的语法):

    $("#mySelector").data("DateTimePicker").setDate(null);
    

    在此日期选择器打开 defaultDate 月份而不是当前日期之后。

    【讨论】:

    • 感谢您的建议,但此解决方案的问题是 defaultDate 将成为输入字段中的默认答案。我想将答案留空作为默认值,并让用户选择日期(而不是不加思索地继续前进)
    【解决方案2】:

    我也遇到了同样的问题,不想设置默认日期(用户必须选择一个日期)。

    我是这样解决的:

      $('#mySelector').on('dp.show', function(e) {
        datePicker = $('#mySelector').data("DateTimePicker");
        if (datePicker.date() == null || datePicker.date().isBefore(datePicker.minDate())) {
          datePicker.date(datePicker.minDate());
          datePicker.date(null);
        }
      });
    

    如果日期选择为空,或者低于最小日期(如果可以更改),那么我们首先将当前日期设置为最小日期(这会强制选择器选择正确的月份,然后清除选择再次)

    我尝试在初始化后直接调用它,但它不起作用,所以我将其更改为绑定到 'dp.show' 事件。

    如果您的 minDate 可以在加载选择器时更改,我建议在更改日期后立即调用它,以立即清除无效的日期选择并移至正确的月份(我在链接选择器中使用它)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 1970-01-01
      • 2013-10-18
      • 2013-02-05
      • 2018-10-24
      • 1970-01-01
      相关资源
      最近更新 更多