Javascript 在jQuery datepicker中分配从mysql获取的日期

Javascript 在jQuery datepicker中分配从mysql获取的日期,javascript,jquery,mysql,datepicker,jquery-ui-datepicker,Javascript,Jquery,Mysql,Datepicker,Jquery Ui Datepicker,我在MySQL中保存了某些日期,我想在jQuery日期选择器中启用这些日期,并禁用rest日期 以下是我的尝试: 我从mysql取数后的日期是:- 一,。2014年7月7日至2014年7月15日 二,。23-08-2014 三,。2014年8月25日至2014年8月26日 要将其存储在jQuery datepicker中,下面是javascipt代码 <script type="text/javascript"> var availableDates = [9,14,15];

我在MySQL中保存了某些日期,我想在jQuery日期选择器中启用这些日期,并禁用rest日期

以下是我的尝试:

我从mysql取数后的日期是:-

一,。2014年7月7日至2014年7月15日

二,。23-08-2014

三,。2014年8月25日至2014年8月26日

要将其存储在jQuery datepicker中,下面是javascipt代码

<script type="text/javascript">
    var availableDates = [9,14,15]; //desired Days
    var availableMonth = [1,5,7]; //desired Month
    var availableYear = [2014,2015]; //desired Year
    function available(date) {
       dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear();
       if (jQuery.inArray(date.getDate(), availableDates) != -1 && $.inArray((date.getMonth()+1), availableMonth) != -1 && $.inArray(date.getFullYear(), availableYear) != -1) {
          return [true, "","Available"];
       } else {
         return [false,"","unAvailable"];
       }
    }
    jQuery('#datepicker').datepicker({ beforeShowDay: available });
</script>
当前脚本只在每个月启用上述日期,但我希望它是每个月的某个动态日期。为此,我尝试创建下面的对象,但不确定如何实现它

var availableTime = {
    '2014' : {
        '07' : ['07', '08', '09', '10'],
        '08' : ['01', '02', '05']
    },
    '2015' : {
        '02' : ['11', '18', '19', '21'],
        '03' : ['21', '22', '25']
    }
};
jQuery(document).ready(function() {
    for(var j in obj )
    {
        for(var p in obj[j] )
        {
            for(var i = 0; i < obj[j][p].length; i++ )
            {
                 console.log(obj[j][p][i]);
            }
        }
    }
});
我如何实现它们

问题中的日期选择器来自以下位置:


谢谢

在您所做的基础上,您可以使可用的功能如下所示:

availableTime是一个数组,它将包含您上面提到的所有可用日期。此阵列可以通过ajax调用构建,也可以在渲染视图时在服务器端构建

在客户端拥有该数组后,下面的available函数用于通过在availableTime数组中查找来检查是否允许任何给定日期

这是一本书


因此,基本上,特定m的特定日期d或该年份y不为空。它将返回真值。

您想做什么?必须有来自mysql数据库的输入,其日期、月份和年份将存储在数组中,这些日期需要与datepicker中的日历日期进行检查。我无法理解您的变量availableTime。没有创建此变量?我添加了一个工作示例。这会让你更好地理解它。
// The map of specific available dates by month and year
var availableTime = {
    '2014': {
        '7': ['7', '8', '9', '10'],
        '8': ['1', '2', '5']
    },
    '2015': {
        '2': ['11', '18', '19', '21'],
        '3': ['21', '22', '25']
    }
};

function available(date) {
    var d, m, y, availableDates = [];
    d = date.getDate().toString();
    m = date.getMonth() + 1;
    y = date.getFullYear();
    if (availableTime[y] && availableTime[y][m]) {
        /* 
         * Get available dates of this specific month and year from
         * the map defined above
         */
        availableDates = availableTime[y][m];
    }

    // return true if that day is allowed in the specific dates
    var available = (jQuery.inArray(d, availableDates) > -1);
    if (available) {
        return [true, "", "Available"];
    } else {
        return [false, "", "unAvailable"];
    }
}

jQuery('#datepicker').datepicker({
    beforeShowDay: available
});