1

我遇到了问题,必须禁用的日子被转移到第二天。这个想法是在我们的对象中不存在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();
            }
        }
    );
});

有人可以建议我做错了什么还是一个错误?

4

1 回答 1

1

这是一个小小的挣扎,但不是一个错误。使用有问题:

date.toISOString()

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

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

所以你的情况不会很好。

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

于 2012-10-20T10:56:52.157 回答