在 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-2014
到15-07-2014
2)。 23-08-2014
3)。从25-08-2014
到26-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 在选定日期后关闭 datepicker