jQueryUI Datepicker,仅允许范围内的日期

时间:2019-09-11 11:44:11

标签: jquery jquery-ui datepicker jquery-ui-datepicker

我需要实现一个jQueryUI日历,该日历仅允许用户从特定范围内选择日期。日期范围以日期数组的形式出现,例如: [["2019-10-10", "2019-11-14"],["2019-09-10", "2019-09-27"]] (范围永不重叠)

我已经编写了这段代码,但是它只显示其中一个数组的日期,并使所有其他数组均不可选择。

$(document).ready(function() { 
    var allowed_dates = component.get('v.dates');
    $( "#datepickerId" ).datepicker({
            showButtonPanel: true,
            changeMonth: true,
            changeYear: true,
            dateFormat: 'yy-mm-dd',
            beforeShowDay: function(date) {
                var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
                    for (var i = 0; i < allowed_dates.length; i++) {
                        var from = new Date(allowed_dates[i][0]);
                        var to = new Date(allowed_dates[i][1]);
                        var current = new Date(string);
                        if (current >= from && current <= to) {
                            return [true, ""];
                        } else {
                            return [false, ""];
                        }
                    }
            }
        });
});

我认为当for循环针对第二个数组运行时,可选日期将被覆盖

1 个答案:

答案 0 :(得分:0)

我对代码进行了以下更改,以实现所需的条件。

beforeShowDay: function (date) {
    var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
    for (var i = 0; i < allowed_dates.length; i++) {
        var from = new Date(allowed_dates[i][0]);
        var to = new Date(allowed_dates[i][1]);
        var current = new Date(string);
        if (current >= from && current <= to) {
            return [true, ""];
        }
    }
    return [false, ""];
}