jquery datepicker – beforeShowDay问题

我有以下代码:

$(document).ready(function(){ $(".datepicker").each(function() { $(this).datepicker({ beforeShowDay: function(date){ return [$(this).parent().find("span.days").html(), ""] }, }); }); }); 

有了这个身体代码……

 
(date.getDay() == 1 || date.getDay() == 4)
(date.getDay() == 2 || date.getDay() == 5)

我希望能够做的是让每个日期选择器都有不同的日期可选。

我试图这样做的方式(将beforeShowDay代码的不同部分放在一个范围内)可能不是最优雅的,所以请随意将我的代码分开并在必要时进行更改。

您可以创建一个保持可选天数的对象,如下所示:

 var pickable = { dp1: [1, 4], dp2: [2, 5] }; $('.datepicker').each(function() { $(this).datepicker({ beforeShowDay: function(date){ var day = date.getDay(), days = pickable[this.id]; return [$.inArray(day, days) > -1, ""]; } }); });​ 

你可以在这里尝试一下 。 dp1dp2是控件的ID。或者你可以真正映射的任何属性,如下所示:

   

这个概念非常简单,使用ID获取此选择器的天数,然后使用$.inArray()查看我们所在的那一天是否在该数组中。 如果可以共享这些日期选择,请不要使用ID,而是为属性执行类似data-pickerType的操作,并在上面的代码this.id $(this).attr("data-pickerType") this.id替换为$(this).attr("data-pickerType")

注意:我保留了.each()完整,因为我知道你需要它是因为当前问题之外的原因。