我正在与beforeShowDay事件作斗争:
我正在设置的日期选择器建议某些学习计划的开始日期,它需要以这种方式行事:
这是我到目前为止做的事情(可能没有优化,但我会看到一旦一切运行起来我能做什么):
function availableDays(date) {
var holidays = $("#holidays").text(); // "1-1-2012,2-20-2012,4-6-2012,4-9-2012,5-21-2012,7-2-2012,8-6-2012,9-3-2012-10-8-2012,11-11-2012,12-25-2012,12-26-2012"
var holidaysDates = new Array();
holidaysDates = holidays.split(",");
var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
var selectedCourseStartingDates = $("#courseName option:selected").attr("startingdates");
if(selectedCourseStartingDates != "") {
var courseStartingDates = new Array();
courseStartingDates = selectedCourseStartingDates.split(",");
for(i = 0; i < courseStartingDates.length; i++) {
if($.inArray((m+1) + '-' + d + '-' + y,courseStartingDates) != -1 || new Date() > date) {
if($.inArray((m+1) + '-' + d + '-' + y,holidaysDates) != -1) {
return [false];
}
else {
return [true];
}
}
else {
return [false];
}
}
}
else {
// If not Monday
if(date.getDay() != 1) {
return [false];
}
else {
if($.inArray((m+1) + '-' + d + '-' + y,holidaysDates) != -1) {
return [false];
}
else {
return [true];
}
}
}
}
function noWeekendsOrHolidays(date) {
var noWeekend = $.datepicker.noWeekends(date);
return noWeekend[0] ? availableDays(date) : noWeekend;
}
我在beforeShowDay事件中调用了“noWeekendsOrHolidays”。 我以两种字符串(特定的启用日期和假期到日期)获取日期,格式为“m-d-yyyy”。
我需要你的帮助来找出这个循环中的位置(以及它是如何实现的)我可以告诉datepicker实例在当前正在测试的那个之后的日期返回true或false吗?
当我周一去度假时,是否有可能在下一次迭代(日历上的第二天)上放置一个标志,测试可以考虑这个标志,以便在周二返回true,而不是假设它是假的表现在第一位?
嗯,我希望我足够清楚?英语不是我的母语,所以如果我使用的某些术语不正确,请告诉我。
非常感谢你对此的帮助!
和Cédric
答案 0 :(得分:0)
在这里发布我的问题实际上允许我退后一步找到解决方案。
这是我更新的代码:
function availableDays(date) {
var holidays = $("#holidays").text(); // "1-1-2012,2-20-2012,4-6-2012,4-9-2012,5-21-2012,7-2-2012,8-6-2012,9-3-2012-10-8-2012,11-11-2012,12-25-2012,12-26-2012"
var holidaysDates = new Array();
holidaysDates = holidays.split(",");
var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
var selectedCourseStartingDates = $("#courseName option:selected").attr("startingdates");
if(selectedCourseStartingDates != "") {
var courseStartingDates = new Array();
courseStartingDates = selectedCourseStartingDates.split(",");
for(i = 0; i < courseStartingDates.length; i++) {
if($.inArray((m+1) + '-' + d + '-' + y,courseStartingDates) != -1 || new Date() > date) {
if($.inArray((m+1) + '-' + d + '-' + y,holidaysDates) != -1) {
return [false];
}
else {
return [true];
}
}
else {
return [false];
}
}
}
else {
// If not Monday
if(date.getDay() != 1) {
/* UPDATED */
if($.inArray((m+1) + '-' + (d-1) + '-' + y,holidaysDates) != -1) {
return [true];
}
else {
return [false];
}
/**********/
}
else {
if($.inArray((m+1) + '-' + d + '-' + y,holidaysDates) != -1) {
return [false];
}
else {
return [true];
}
}
}
}
function noWeekendsOrHolidays(date) {
var noWeekend = $.datepicker.noWeekends(date);
return noWeekend[0] ? availableDays(date) : noWeekend;
}
我只是在前一天(d-1)测试,当我度过一个不是星期一的假期时。
度过美好的一天!
和Cédric