jQuery 日期选择器 - 将范围限制为提前 7 个工作日(不包括周末)
jQuery Datepicker - Limit range to 7 WORKING days ahead (Excluding weekends)
正如标题所说,我正在尝试让 jQuery 日期选择器允许用户从接下来的 7 个工作日开始 select 日期。我到处搜索解决方案,但我找到的最接近的是可以 selected 的最早日期是从今天起 x 天。我需要限制 select 可用范围。
例如,如果今天是 1 号星期一,那么我希望范围是 2 号到 10 号,因为我不想包括星期六或星期日。
所以日期选择器应该只允许 2 号(星期二)、3 号(星期三)、4 号(星期四)、5 号(星期五)、8 号(星期一)、9 号(星期二)和 10 号(星期三)。
显然这些只是示例日期,我想要任何当前日期。
我的代码如下;
<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>
如有任何帮助,我们将不胜感激:-)
马特
您可以使用 maxdate 并定义 +x 天,无需自定义 javascript。只需使用编程的功能
maxDate: '+9D'
用于 mindate 使用 -0
minDate: '+1D'
跳过周末
beforeShowDay: $.datepicker.noWeekends
更新 fiddle 来自其他用户 http://jsfiddle.net/wQe8c/914/
这是一个有效的 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;
}
然后像下面这样初始化日期选择器:
$(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
});
});
在这种情况下,您想知道必须将多少天添加到日期选择器。我做了一个函数,根据星期几计算天数。
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
参数添加到您的日期选择器对象。同时设置 minDate: 1,
以便排除 "today".
完整代码: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
});
});
正如标题所说,我正在尝试让 jQuery 日期选择器允许用户从接下来的 7 个工作日开始 select 日期。我到处搜索解决方案,但我找到的最接近的是可以 selected 的最早日期是从今天起 x 天。我需要限制 select 可用范围。
例如,如果今天是 1 号星期一,那么我希望范围是 2 号到 10 号,因为我不想包括星期六或星期日。
所以日期选择器应该只允许 2 号(星期二)、3 号(星期三)、4 号(星期四)、5 号(星期五)、8 号(星期一)、9 号(星期二)和 10 号(星期三)。
显然这些只是示例日期,我想要任何当前日期。
我的代码如下;
<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>
如有任何帮助,我们将不胜感激:-)
马特
您可以使用 maxdate 并定义 +x 天,无需自定义 javascript。只需使用编程的功能
maxDate: '+9D'
用于 mindate 使用 -0
minDate: '+1D'
跳过周末
beforeShowDay: $.datepicker.noWeekends
更新 fiddle 来自其他用户 http://jsfiddle.net/wQe8c/914/
这是一个有效的 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;
}
然后像下面这样初始化日期选择器:
$(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
});
});
在这种情况下,您想知道必须将多少天添加到日期选择器。我做了一个函数,根据星期几计算天数。
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
参数添加到您的日期选择器对象。同时设置 minDate: 1,
以便排除 "today".
完整代码: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
});
});