在JQuery UI Datepicker中使用beforeShowDay来关闭一周中的几天
我想要做的是在一周的某些日子里把它关闭的地方变灰。 每个场地可能在不同的日子关闭。
我可以使用以下代码作为测试来关闭所有星期日:
$('#bookingDatepicker').datepicker({ minDate: 0, maxDate: '+3M', dateFormat: 'DD, d MM, yy', altField: '#actualDate', altFormat: 'yy-mm-dd', beforeShowDay: closedDays }); function closedDays(date) { if (date.getDay() == 0){ return [false,"","Venue Closed"]; } else { return [true, ""]; } }
但是,我可能不得不关闭超过一天,他们可能不会彼此相邻。 在我的数据库代码中,我可以创建一个字符串,下面的示例,显示哪些日期是开放的…
1,2,3,4,5,6,0 //I would want to show no days closed 2,3,4,5,6 //I would want to show Sunday (0) and Monday (1) closed
我不知道该怎么做才能让上面的代码工作。 我正在使用PHP来创建字符串,因此如果需要可以使用它来操作它。
编辑
像往常一样,当你发布一个问题时,你会得到一个小小的突破! 我已经开发了下面的代码,如果我在其中使用虚拟数据,它可以工作,但我需要找到一种方法将我的字符串值包装在“”中。 那现在给我带来了麻烦,如果我只使用var cloDays = [2,3,4,5]它就不再起作用了
var cloDays = ["2","3","4","5"]; function closedDays(date){ var sDate = date.getDay().toString(); if ($.inArray(sDate, cloDays) == -1) return [false,"","Venue Closed"]; else return [true, ""]; }
这篇文章没有解决我的问题,但指出了我正确的方向。
这就是我想要的方式:
var unavailableDates = ["9-5-2011","10-5-2011"]; function unavailable(date) { dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear(); if ($.inArray(dmy, unavailableDates) == -1) { return [true, ""]; } else { return [false,"","Unavailable"]; } } $('#iDate').datepicker({ minDate: +1, beforeShowDay: unavailable });
这将阻止过去的所有日期(包括今天),然后阻止在unavailableDates数组中指定的日期。
管理通过在下面的代码中运行我的字符串来修复它,基本上将它爆炸成PHP数组,然后使用JSON_Encode对其进行编码。 似乎完美地工作:
$cloDays = json_encode(explode(",", $cloDays));