【问题标题】:Disable custom dates in jquery datepicker在 jquery datepicker 中禁用自定义日期
【发布时间】:2013-08-29 11:57:46
【问题描述】:

我正在尝试从 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;
}  

【问题讨论】:

    标签: javascript jquery jquery-ui


    【解决方案1】:

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

    【讨论】:

    • 非常感谢!我很惊讶我没有在脑海中编译它。
    猜你喜欢
    • 2017-07-31
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2012-04-02
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多