【问题标题】:Assigning fetched date from mysql in jQuery datepicker在 jQuery datepicker 中分配从 mysql 获取的日期
【发布时间】: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/

谢谢

【问题讨论】:

    标签: javascript jquery mysql datepicker jquery-ui-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。没有创建这个变量?
    • 我添加了一个工作示例。这应该让你更好地理解它。
    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 2014-12-27
    • 2011-02-03
    • 2013-06-21
    • 1970-01-01
    相关资源
    最近更新 更多