jQuery Datepicker – 禁用周末/假日以及接下来的三个工作日

使用这个相当简洁的方法,我可以从datepicker禁用周末和假期。

但是,我希望将此与从今天开始的下三个工作日的禁用相结合。 只需设置最短日期相对简单:

var dateMin = new Date(); dateMin.setDate(dateMin.getDate() + 3); $(function() { $('#txtCollectionDate').datepicker( { beforeShowDay: noWeekendsOrHolidays, showOn: "both", dateFormat: "dd/mm/yy", firstDay: 1, changeFirstDay: false, minDate: dateMin }); }); 

但是,我真正需要一个计算工作日的函数:

 var dateMin = new Date(); dateMin.setDate(AddBusinessDays(3)); 

任何人都可以将其转换为JavaScript?

在这里找到解决方案。

代码(ASP的道歉):

   Collection Date      

jQuery Datepicker Test

<% If Request.Form("Submit") <> "" then %>

Form Post Confirmation

<% Dim Item For Each Item In Request.Form %> <% Next %>
Form Variable Value
<%=Item %> <%=Request.Form(Item) %>
<% End If %>

Collection Form

Choose the collection date

我的情况非常接近,但想法是应该在脚本中添加工作日数。 我从Junto示例中将AddWeekDays()替换为AddBusinessDays()。 因此,当计算时,它会跳过所有非工作日。

  //holidays var natDays = [ [1, 1, 'uk'], [12, 25, 'uk'], [12, 26, 'uk'] ]; var dateMin = new Date(); var weekDays = AddBusinessDays(3); dateMin.setDate(dateMin.getDate() + weekDays); function AddBusinessDays(weekDaysToAdd) { var curdate = new Date(); var realDaysToAdd = 0; while (weekDaysToAdd > 0){ curdate.setDate(curdate.getDate()+1); realDaysToAdd++; //check if current day is business day if (noWeekendsOrHolidays(curdate)[0]) { weekDaysToAdd--; } } return realDaysToAdd; } function noWeekendsOrHolidays(date) { var noWeekend = $.datepicker.noWeekends(date); if (noWeekend[0]) { return nationalDays(date); } else { return noWeekend; } } function nationalDays(date) { for (i = 0; i < natDays.length; i++) { if (date.getMonth() == natDays[i][0] - 1 && date.getDate() == natDays[i][1]) { return [false, natDays[i][2] + '_day']; } } return [true, '']; } $('#datepicker').datepicker( { inline: true, beforeShowDay: noWeekendsOrHolidays, altField: '#txtCollectionDate', showOn: "both", dateFormat: "dd/mm/yy", firstDay: 1, changeFirstDay: false, minDate: dateMin }); 

修改上面的代码,用于不同年份的不同日子,你可以使用……