inp*_*put 5 jquery jquery-ui datepicker
我有两个文本字段。在第一个文本字段中,我使用 jQueryUI Datepicker 添加了一个日历。当用户从日期选择器中选择日期时,它应该自动将 30 天添加到日期并在第二个文本字段中设置此值。我有这个工作来增加 30 天的日期。
但是,它应该排除周末和节假日,只显示 30 个工作日。我该怎么做呢?
if ($('#cat option:selected').text() == "ABC") {
var date_billed = $('#datebilled').datepicker('getDate');
var date_overdue = new Date();
date_overdue.setDate(date_billed.getDate() + 30);
date_overdue = $.datepicker.formatDate('mm/dd/yy', date_overdue);
$('#datepd').val(date_overdue).prop('readonly', true);
}
Run Code Online (Sandbox Code Playgroud)
更新:我添加了 noWeekendsOrHolidays 函数来禁用周末或假期。无论如何我可以使用此功能来计算日期并将工作日添加到日期中吗?
//holidays
var natDays = [
[7, 4, 'us']
];
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, ''];
}
Run Code Online (Sandbox Code Playgroud)
解决了!这个答案在这里有很大帮助。
代码:
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;
}
var date_billed = $('#datebilled').datepicker('getDate');
var date_overdue = new Date();
var weekDays = AddBusinessDays(30);
date_overdue.setDate(date_billed.getDate() + weekDays);
date_overdue = $.datepicker.formatDate('mm/dd/yy', date_overdue);
$('#datepd').val(date_overdue).prop('readonly', true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10257 次 |
| 最近记录: |