在jquery datepicker中禁用自定义日期

时间:2013-08-29 11:57:47

标签: javascript jquery jquery-ui

我正在尝试从Jquery UI datepicker日历中禁用某些日期。

我的问题是,只有disableDays函数检查的最后一个日期被禁用,而不是全部。为什么它仅禁用上次检查的日期。我应该从此功能返回不同的响应吗?

完整脚本:

var disabled_days = new Array(); // Array of Date() objects


$('.date-picker-day').live('click', function () {
    $(this).datepicker({
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'dd',
        beforeShow: function () {
            [..]
        },
        beforeShowDay: disableDays,
        onClose: function (dateText, inst) {

        }

    }).focus();
});

function disableDays(date) {
    var ret = false;
    $.each(disabled_days, function (k, v) {
        if (v.getDate() == date.getDate()) {
            console.log(v + 'vs.' + date + ' invalid');
            ret = [false];
        } else {
            ret = [true];
        }
    });

    return ret;
}  

1 个答案:

答案 0 :(得分:0)

一旦找到否定匹配,您需要停止disabled_days数组的进一步迭代,否则在下一个值迭代中,日期将不匹配,ret将再次获得true }值

function disableDays(date) {
    var ret = false;
    $.each(disabled_days, function (k, v) {
        if (v.getDate() == date.getDate()) {
            console.log(v + 'vs.' + date + ' invalid');
            ret = [false];
            return false;
        } else {
            ret = [true];
        }
    });
    return ret;
}

演示:Fiddle