我使用jQuery UI创建了一个自定义日期选择器: http://jsfiddle.net/u8fVj/
$("#input_custom_date").datepicker({
numberOfMonths: 2,
beforeShowDay: function(date) {
//Get today's date
var today = new Date();
today.setHours(0,0,0,0);
if (today.getDay() == 4 || today.getDay() == 5 || today.getDay() == 6) {
//If today is Wednesday, Thursday, Friday don't allow Sunday to be selectable until the next week on Sunday.
var disabledDate = new Date(today||new Date());
disabledDate.setDate(disabledDate.getDate() + (0 - 1 - disabledDate.getDay() + 7) % 7 + 1);
return [(date > today && date.getDay() == 0 && date.toString() != disabledDate.toString()), ''];
}else if(today.getDay() == 0){
//If today is Sunday, don't allow today to be selectable.
var disabledDate = today;
var curr_date = date.getDate();
var curr_month = date.getMonth();
var curr_year = date.getFullYear();
var dDate = new Date(curr_year, curr_month, curr_date);
return [(date > today && date.getDay() == 0 && dDate.toString() != disabledDate.toString()), ''];
}else{
//Everything is fine, allow all Sundays to be selectable
var day = date.getDay();
return [(date > today && day == 0), ''];
}
}
});
现在用户应该只能在星期天选择日期。它需要检查并查看今天的日期是在即将到来的星期日之前的星期三,星期四或星期五,如果是,日期选择器应该禁用即将到来的星期日。同样,如果今天的日期是星期日,它应该在日期选择器中禁用。
但是,我不需要仅选择星期日,而是将日期选择器更改为仅允许星期一和星期二可选。如果今天的日期是星期四,星期五或星期六,它应该禁用即将到来的星期一和星期二。如果今天是星期一,它应该禁用当周的星期一和星期二。如果今天的日期是星期二,它应该只禁用今天的日期。
另外,我需要能够在特定日期投入禁用假期,这可能是硬编码的。
不确定如何超越我现在所拥有的,并感谢任何帮助。我一直试图让这个工作起来,并且不能让逻辑解决。
答案 0 :(得分:1)
您基本上只需将.getDay() == 0
支票移至.getDay() == 1 || .getDay() == 2
,1和2即周一和周二。需要对disableDate
disabledDate.setDate(disabledDate.getDate() + (1 - 1 - disabledDate.getDay() + 7) % 7 + 1);
将0 - 1
更改为1 - 1
(不需要,但为了清晰起见),以便获得星期一。 2 - 1
产生于星期二。
至于处理特殊日期,您可以将它们存储在DOM中的<ul hidden>
中并首先检查这些日期:
beforeShowDay: function(date) {
//Get today's date
var today = new Date(), specialDate = false;
today.setHours(0,0,0,0);
$(".special-dates li").each(function () {
if ($(this).text() == today.toString()) {
specialDate = true;
return false;
}
});
if (specialDate) {
return [true, ''];
}