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, ""]; } }); });
你可以在这里尝试一下 。 dp1
和dp2
是控件的ID。或者你可以真正映射的任何属性,如下所示:
这个概念非常简单,使用ID获取此选择器的天数,然后使用$.inArray()
查看我们所在的那一天是否在该数组中。 如果可以共享这些日期选择,请不要使用ID,而是为属性执行类似data-pickerType
的操作,并在上面的代码this.id
$(this).attr("data-pickerType")
this.id
替换为$(this).attr("data-pickerType")
。
注意:我保留了.each()
完整,因为我知道你需要它是因为当前问题之外的原因。