Javascript beforeShowDay方法如何工作?(Jquery UI日期选择器)

Javascript beforeShowDay方法如何工作?(Jquery UI日期选择器),javascript,jquery,jquery-ui,jquery-ui-datepicker,Javascript,Jquery,Jquery Ui,Jquery Ui Datepicker,我已经花了很长时间试图找到一个清晰的解释,但我似乎无法理解这个方法是如何工作的。下面是jQueryUIAPI的官方文档。其他人可能很清楚,但我觉得有点模糊。我只想获取一个日期数组并禁用它们。我可以使所有日期不可选择,但不是我想要的 beforeShowDayType:函数(日期) 默认值:null 以日期为参数的函数,必须返回具有以下内容的数组: [0]:true/false,指示此日期是否可选择 [1] :要添加到日期单元格的CSS类名或默认演示文稿的“” [2] :此日期的可选弹出工具提示

我已经花了很长时间试图找到一个清晰的解释,但我似乎无法理解这个方法是如何工作的。下面是jQueryUIAPI的官方文档。其他人可能很清楚,但我觉得有点模糊。我只想获取一个日期数组并禁用它们。我可以使所有日期不可选择,但不是我想要的

beforeShowDayType:函数(日期)

默认值:null

以日期为参数的函数,必须返回具有以下内容的数组:

[0]:true/false,指示此日期是否可选择 [1] :要添加到日期单元格的CSS类名或默认演示文稿的“” [2] :此日期的可选弹出工具提示

在显示该函数之前,每天都会在datepicker中调用该函数


到目前为止,这是我的(不完整)代码

$(document).ready(function() {
    var array = ["2014-01-03","2014-01-13","2014-01-23"];
    $('#fromDate').datepicker({
        dateFormat: "yy-mm-dd",
        beforeShowDay: function(date) {
            {
                return [false, "", "Booked out"];
            } else {
                return [true, "", "available"];
            }
        }
    });
});
试试这个:

beforeShowDay: function(date) {
    if($.inArray($.datepicker.formatDate('yy-mm-dd', date ), array) > -1)
    {
        return [false,"","Booked out"];
    }
    else
    {
        return [true,'',"available"];
    }
}

看起来是个好的开始。现在,您只需要在这两个
{
s之间使用
if
语句。变量
date
将是做出决定的日期,因此您的条件基本上是
if(dateIsBookedOut(date))
同意,但只有当jquery构造函数($)与其他内容绑定时,才会这样做。