正如标题所说,我试图让jQuery Datepicker允许用户选择接下来7个工作日的日期。我到处寻找解决方案,但我发现的最接近的地方是可以选择的最早日期是从今天开始的x天。我需要限制可选范围。
因此,例如,如果今天是星期一,那么我希望范围是第2到第10,因为我不想包括星期六或星期日。
所以Datepicker应该只允许第二(星期二),第三(星期三),第四(星期四),第五(星期五),第八(星期一),第九(星期二)和十(星期三)。
显然这些只是示例日期,我希望它们适用于任何当前日期。
我的代码如下;
<script>
$(function ()
{
var date = new Date();
var currentMonth = date.getMonth();
var currentDate = date.getDate();
currentDate = currentDate;
var currentYear = date.getFullYear();
$('#datepicker2').datepicker(
{
dateFormat: "yy-mm-dd",
beforeShowDay: $.datepicker.noWeekends,
minDate: new Date(currentYear, currentMonth, currentDate)
});
});
</script>
任何帮助将不胜感激: - )
太
答案 0 :(得分:1)
你可以使用maxdate和define + x天,不需要自定义的javascript。只需使用编程的功能
maxDate: '+9D'
请注意使用-0
minDate: '+1D'
跳过周末
beforeShowDay: $.datepicker.noWeekends
更新小提琴
答案 1 :(得分:0)
这是一个有效的fiddle。
定义一个功能,仅将工作日添加到特定日期,不包括周末。
function addWeekdays(date, days) {
date.setDate(date.getDate());
var counter = 0;
if(days > 0 ){
while (counter < days) {
date.setDate(date.getDate() + 1 ); // Add a day to get the date tomorrow
var check = date.getDay(); // turns the date into a number (0 to 6)
if (check == 0 || check == 6) {
// Do nothing it's the weekend (0=Sun & 6=Sat)
}
else{
counter++; // It's a weekday so increase the counter
}
}
}
return date;
}
然后初始化datepicker,如下所示:
$(function () {
var date = new Date();
var currentMonth = date.getMonth();
var currentDate = date.getDate();
currentDate = currentDate;
var currentYear = date.getFullYear();
var maxDate = addWeekdays(date, 7);
$('#datepicker2').datepicker({
dateFormat: "yy-mm-dd",
beforeShowDay: $.datepicker.noWeekends,
minDate: new Date(currentYear, currentMonth, currentDate),
maxDate: maxDate
});
});
答案 2 :(得分:0)
在这种情况下,您想知道必须添加到datepicker的天数。我做了一个函数,根据星期几计算天数。
function getNext7WorkingDays(){
var d = new Date();
var day = d.getDay();
if(day>=0 && day<=3) return 9;
else if(day!=6) return 10;
else return 11;
}
它是如何工作的?如果今天是星期日(0),星期一(1),星期二(2)或星期三(3)你想加9天。如果它是星期四(4)或星期五(5),11。如果它是星期六(6),你想增加10天。如果你愿意,你可以自己做数学。
然后,您只需将beforeShowDay: $.datepicker.noWeekends
参数添加到datepicker对象。同时设置minDate: 1,
,以便排除“今天”。
完整代码:http://jsfiddle.net/oyy2reuf/
$(function() {
function getNext7WorkingDays(){
var d = new Date();
var day = d.getDay();
if(day>=0 && day<=3) return 9;
else if(day!=6) return 10;
else return 11;
}
$("#datepicker").datepicker( {
minDate: 1,
dateFormat: 'dd/mm/yy',
maxDate: '+'+getNext7WorkingDays()+'D',
beforeShowDay: $.datepicker.noWeekends
});
});