Bootstrap datetimepicker步进问题

时间:2015-04-09 11:03:01

标签: jquery twitter-bootstrap bootstrap-datetimepicker

我有两个链接的Bootstrap datetimepickers。这是他们的代码:

var d = new Date();
var one_month = d.setMonth( d.getMonth( ) + 1 );

$(function () {
    $('#pick1').datetimepicker({
            locale: 'en',
            sideBySide: true,
            defaultDate: new Date(),
            minDate: new Date(),
            format: 'DD/MM/YYYY HH:mm',
            stepping: 15
    });

    $('#pick2').datetimepicker({
            locale: 'en',
            sideBySide: true,
            defaultDate: one_month,
            minDate: new Date(),
            format: 'DD/MM/YYYY HH:mm',
            stepping: 15
    });

    $('#pick1').on('dp.change', function (e) {
            $('#pick2').data('DateTimePicker').minDate(e.date);
    });
    $('#pick2').on('dp.change', function (e) {
            $('#pick1').data('DateTimePicker').maxDate(e.date);
    });
});

我遇到的问题是依赖于现在的时间,其中一个选择器(通常是pick1)没有显示默认日期。

这里有一个jsFiddle来说明:

https://jsfiddle.net/6xbt5wa9/1/

(如果看起来没问题,请在几分钟后再次运行)

我认为此问题与stepping选项有关,这只是因为如果您将其注释掉,则会解决问题。

似乎问题与踩踏图的开头有关。因此,如果stepping设置为15;第15,16,17分钟会有问题,但到30分钟则不会。我还没有对这个假设进行测试,结果太短了。

有人可以帮忙吗?我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

我刚遇到这个问题,问题已在插件GitHub Page上引发,但仍然看起来这个bug还没有解决。

  

之所以发生这种情况,是因为步进器向最近的方向旋转   值。所以有时这意味着四舍五入到最接近的15   可以在minDate = moment()之前。

     

示例:上午11:18将向下舍入到上午11:15,但这是在moment()之前   使它无效。

     

这种解释是由GitHub问题提升者提供的。

问题提升者继续提供一个hacky解决方法,我不确定它是多么可靠。也许这个问题仍然在解决,但它刚刚提出来了!

我以为我会与所有人分享这些信息(即使这是一个老问题!),因为那里没有一些关于此的帮助。

答案 1 :(得分:1)

$(function () {
    $('#pick1').datetimepicker({
            locale: 'en',
            sideBySide: true,
            defaultDate: new Date(),
            minDate: new Date(),
            format: 'DD/MM/YYYY HH:mm',
            stepping: 15
    });

    $('#pick2').datetimepicker({
            locale: 'en',
            sideBySide: true,                  
            minDate: new Date(),
            format: 'DD/MM/YYYY HH:mm',
            stepping: 15
    });

    $('#pick1').on('dp.change', function (e) {
            $('#pick2').data('DateTimePicker').minDate(e.date);
    });
    $('#pick2').on('dp.change', function (e) {
            $('#pick1').data('DateTimePicker').maxDate(e.date);
    });
});