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
Form Variable Value <% Dim Item For Each Item In Request.Form %> <%=Item %> <%=Request.Form(Item) %> <% Next %>
<% End If %>
我的情况非常接近,但想法是应该在脚本中添加工作日数。 我从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 });
修改上面的代码,用于不同年份的不同日子,你可以使用……