jquery datepicker beforeshowday将我标记为红色预订日,但仅限于当月

jquery datepicker beforeshowday将我标记为红色预订日,但仅限于当月,jquery,datepicker,Jquery,Datepicker,虽然我得到了所有预订日期的正确json响应,但控制器中有相应的代码,用于计算开始日期和结束日期之间的日期,如下所示: ["30 September 2015","1 October 2015","2 October 2015","3 October 2015"] 只有当月9月的日期被标记为红色。10月的日期,虽然已预订,但不能用红色标记。有两个类似的代码片段,一个是在页面加载时通过ajax获取预定的日期,另一个是响应按钮以添加预定的日期 在这里的代码中,myDate应该是发送到beforesh

虽然我得到了所有预订日期的正确json响应,但控制器中有相应的代码,用于计算开始日期和结束日期之间的日期,如下所示:

["30 September 2015","1 October 2015","2 October 2015","3 October 2015"]
只有当月9月的日期被标记为红色。10月的日期,虽然已预订,但不能用红色标记。有两个类似的代码片段,一个是在页面加载时通过ajax获取预定的日期,另一个是响应按钮以添加预定的日期

在这里的代码中,myDate应该是发送到beforeshowday函数的日期选择器的运行日期,但它似乎只发送9月份的日期,所以剩余的日期不能与我的坏日期进行比较,即在数据中返回的预定日期

是的,beforeshowday上的文档说明:

在显示该函数之前,每天都会在datepicker中调用该函数。 因此,该函数将仅在要显示的天数内调用

事实上,我可以想象jquery可以自动查看显示的月份,然后发送该月份的所有天数,以与预订日期的json数组进行比较。既然如此,为什么不在我打开那个日历月的时候发送十月呢

代码中有一些多余的代码片段,因为bookedperiods是一个没有该方法的控制器的路由,因为我注意到它是不必要的

这可以在这里看到:


问题是数组中的日期格式,因为您对$checkdate使用了dd-MM-yy,所以它的日期值将以0作为前缀,与数组不匹配

$checkdate = $.datepicker.formatDate('dd MM yy', mydate);
您还可以简化checkdate实现,如下所示

jQueryfunction${ var$myBadDates=[2015年9月30日、2015年10月1日、2015年10月2日、2015年10月3日]; $start\u date,end\u date.datepicker{ 日期格式:“dd-MM-yy”, 月数:2, 展示日前:检查日期 }; 函数checkBadDatesmydate{ var$return=true, $returnclass=可用, $checkdate=$.datepicker.formatDate'd MM yy',mydate; 如果$myBadDates.indexOf$checkdate>-1{ $return=false; $returnclass=不可用; } return[$return,$returnclass]; } };
非常感谢你!阿伦
$checkdate = $.datepicker.formatDate('dd MM yy', mydate);