Jquery UI Datepicker禁用错误的日子

时间:2012-10-19 20:12:26

标签: jquery-ui datepicker

我已经开始发布必须禁用的日子转移到第二天。 我们的想法是在日历上禁用我们的booking对象中不存在或值小于1的那一天。

这是我在jsfiddle上的脚本和演示的简化版本:

var bookings = {
    "2012-09-01": 24,
    "2012-09-03": 31,
    "2012-09-05": 27,
    "2012-09-06": 9, 
    "2012-09-07": 18, 
    "2012-09-08": 0, 
    "2012-09-10": 20, 
    "2012-09-12": 19, 
    "2012-09-13": 0, 
    "2012-09-14": 9, 
    "2012-09-15": 24, 
    "2012-09-17": 19, 
    "2012-09-19": 28, 
    "2012-09-20": 15, 
    "2012-09-21": 12, 
    "2012-09-22": 25, 
    "2012-09-24": 19, 
    "2012-09-26": 0, 
    "2012-09-27": 0, 
    "2012-09-28": 0, 
    "2012-09-29": 0
};

function MyEvent(date)
{
    bookings = bookings || {};
    this.date = date.toISOString().substr(0, 10);
    this.display = (typeof bookings[this.date] == 'number' && bookings[this.date] > 0);
    return this;
}

MyEvent.prototype.toArray = function () { 
    return [this.display, null, null]; 
};

$(function ()
{
    $('#eventCalendar').datepicker({
            dateFormat:    "yy-mm-dd",
            firstDay:      1,
            defaultDate:   "2012-09-24",
            beforeShowDay: function (date)
            {
                return new MyEvent(date).toArray();
            }
        }
    );
});

有人可以告诉我,我做错了什么,或者这是一个错误?

1 个答案:

答案 0 :(得分:1)

这有点挣扎,但不是一个错误。 使用时出现问题:

date.toISOString()

操作可以从插件传递的原始日期返回不同的日期(例如第二天),因为该函数忽略了时区偏移

  

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toISOString

所以你的病情不会很好。

这是一个不使用该功能的工作小提琴:http://jsfiddle.net/nBejK/2/