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

Posted

技术标签:

【中文标题】在 jQuery datepicker 中分配从 mysql 获取的日期【英文标题】:Assigning fetched date from mysql in jQuery datepicker 【发布时间】:2014-08-23 13:09:55 【问题描述】:

我的mysql 中保存了某些date,我想在我的jQuery datepicker 中启用这些日期并禁用休息date

这是我的尝试:

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

1)。从07-07-201415-07-2014

2)。 23-08-2014

3)。从25-08-201426-08-2014

并将其存储在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]);
            
        
    
);

我该如何实施,他们?

有问题的日期选择器来自这里:http://api.jqueryui.com/datepicker/

谢谢

【问题讨论】:

【参考方案1】:

在你所做的基础上,你可以让你的可用函数看起来像这样:

availableTime 是包含上述所有可用日期的数组。这个数组可以通过 ajax 调用构建,也可以在渲染视图时在服务器端构建。

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

这是working example。

// 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
);

所以基本上特定 (m) 的特定日期 (d) 或那一年 (y) 不为空。它将返回 true。

【讨论】:

你想做什么?必须有来自mysql 数据库的输入,其日期、月份和年份将存储在数组中,并且这些日期需要与日期选择器中的日历日期进行检查。 我无法理解您的变量availableTime。没有创建这个变量? 我添加了一个工作示例。这应该让你更好地理解它。

以上是关于在 jQuery datepicker 中分配从 mysql 获取的日期的主要内容,如果未能解决你的问题,请参考以下文章

jquery 中datepicker 插件 问题

jQuery Datepicker 在选定日期后关闭 datepicker

jQuery UI 中的 datepicker( )方法

加载时jQuery datepicker表示未定义。

jQuery datepicker 函数:datepicker 不是函数

使用 jquery 验证和 jquery-ui datepicker