的一個,我與beforeShowDay事件的戰鬥後的一天:jQuery UI的日期選擇器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;
}
我稱之爲「noWeekendsOrHolidays」上beforeShowDay事件。 我以這種格式「m-d-yyyy」從2個字符串中獲取我的日期(特定啓用日期和假期到desable)。
我需要你的幫助來找出在這個循環中的位置(以及如何實際上是可能的)我可以告訴datepicker實例在當前正在測試的一次之後返回真或假的日期?
星期一假期有可能在下一次迭代(日曆上的第二天)上放置一個標誌,測試可以考慮這個標誌在星期二返回true而不是假,因爲它是應該首先表現出來?
那麼,我希望我足夠清楚了嗎?英語不是我的母語,所以讓我知道我使用的某些術語是不是正確的。
非常感謝您的幫助!
塞德里克