我一直试图在没有周末和特定月份的情况下做一个日期选择器。我可以让一个或另一个工作,但有一个问题试图让两者同时工作。 有什么建议吗? 这是我的小提琴...... https://jsfiddle.net/CreativeConcepts/39jtLhwm/
var RangeDates = ["4/1/2017, 6/30/2017", "11/1/2017, 12/31/2017", "4/1/2018, 6/30/2018", "11/1/2018, 12/31/2018", "4/1/2019, 6/30/2019", "11/1/2019, 12/31/2019",];
var RangeDatesIsDisable = true;
function DisableDays(date) {
var isd = RangeDatesIsDisable;
var rd = RangeDates;
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
for (i = 0; i < rd.length; i++) {
var ds = rd[i].split(',');
var di, df;
var d1, m1, y1, d2, m2, y2;
if (ds.length == 1) {
di = ds[0].split('/');
d1 = parseInt(di[1]);
m1 = parseInt(di[0]);
y1 = parseInt(di[2]);
if (y1 == y && m1 == (m + 1) && d1 == d) return [!isd];
} else if (ds.length > 1) {
di = ds[0].split('/');
df = ds[1].split('/');
d1 = parseInt(di[1]);
m1 = parseInt(di[0]);
y1 = parseInt(di[2]);
d2 = parseInt(df[1]);
m2 = parseInt(df[0]);
y2 = parseInt(df[2]);
if (y1 >= y || y <= y2) {
if ((m + 1) >= m1 && (m + 1) <= m2) {
if (m1 == m2) {
if (d >= d1 && d <= d2) return [!isd];
} else if (m1 == (m + 1)) {
if (d >= d1) return [!isd];
} else if (m2 == (m + 1)) {
if (d <= d2) return [!isd];
} else return [!isd];
}
}
}
}
return [isd];
}
$(document).ready(function() {
$("#datepicker").datepicker({
minDate: 0,
maxDate: null,
dateFormat: 'MM dd, yy',
beforeShowDay: DisableDays
});
});
答案 0 :(得分:1)
查看星期几并返回将允许您这样做。
if(date.getDay() == "6" || date.getDay() == "0" ){ return isd }
答案 1 :(得分:0)
您可以使用内置功能过滤掉周末:
var noWeekend = $.datepicker.noWeekends(date);
我还为问题的无效月份部分找到了一个更简单的解决方案:
invalidMonths = [4,5,6,11,12];
function noInvalidMonths(date) {
if(jQuery.inArray(date.getMonth()+1, invalidMonths)>-1){
return [false, '']
}
return [true, ''];
}
有关完整的解决方案,请参阅this updated fiddle。感谢Adam Bellaire his answer to a related question。