如何根据用户在那里选择的日期在datetimepicker中设置最短时间?

时间:2015-10-02 09:35:54

标签: javascript jquery datetime datetimepicker

我正在使用此页面http://xdsoft.net/jqplugins/datetimepicker/中的jquery.datetimepicker.js,我想以特定方式实现它,因此用户可以选择从特定日期开始24小时开始的日期。 到目前为止我所做的是:

我根据从服务器收到的字符串创建了一个新的日期对象:

var now = new Date("October 05, 2015 17:59:57");

我在这个日期增加了24小时:

now.setHours(now.getHours() + 24);

后来我把这个逻辑:

    var dd = now.getDate();
    var mm = now.getMonth();
    var yy = now.getFullYear();
    var hh = now.getHours();

    var isPM = now.getHours() >= 12;
    var isMidday = now.getHours() == 12;
    var time = [now.getHours() - (isPM && !isMidday ? 12 : 0),
        now.getMinutes()].join(':') +
            (isPM ? ' pm' : 'am');

    var logic = function (currentDateTime) {
    if (currentDateTime.getDate() == dd && currentDateTime.getFullYear() == yy && ((currentDateTime.getMonth()) == mm)) {
            this.setOptions({
                formatTime: 'g:i A',
                format: 'd/m/Y h:i A',
                minDate: now,
                minTime: time
            });
    }
        else{
            this.setOptions({
                formatTime: 'g:i A',
                format: 'd/m/Y h:i A',
                minDate: now,
                minTime: '0:00 AM'
            });
        }


    };

它几乎正常。 当用户打开datetimepicker时,他每天都会看到10月6日被禁用(这没关系)。当他选择10月6日时,他可以选择从17:59:57开始的时间(在给定时间后24小时 - 这很好)。当用户稍后点击任何一天时,例如十月七日 - 他可以选择从凌晨0点开始的任何一小时(这也很酷)。

因此,当他选择10月7日和0:00 AM的日期时,他可以将日期切换回10月6日,时间保持在凌晨0:00 - 这是错误的,因为它应该跳进可用的插槽,当天17:59:57。

我该如何解决?

到目前为止,这是我的小提琴:http://jsfiddle.net/b8o5cvdz/17/

1 个答案:

答案 0 :(得分:0)

不幸的是插件包含一些缺陷。我在他们的例子中遇到了同样的错误。您也可以直接在输入框中修改日期,并在minDate之前写一段时间。

我的建议改为使用https://github.com/Eonasdan/bootstrap-datetimepicker

您可以使用minDate选项获得与here相同的效果。并检查日期更改here

我希望这会有所帮助。