禁用jquery日期选择器中的自定义日期

Disable custom dates in jquery datepicker

本文关键字:日期 自定义 选择器 jquery 禁用      更新时间:2023-09-26

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

我的问题是,只有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;
}  

一旦发现负匹配,就需要停止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