私は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」と呼びます。この形式「md-yyyy」の2つの文字列(特定の有効な曜日と休日からdesable)から日付を取得します。
このループのどこにあるか(そしてそれが実際に可能かどうか)を知るためにあなたの助けが必要です。現在テストされている日付の後の日付に対してtrueまたはfalseを返すようにdatepickerインスタンスに指示できますか?
月曜日の休日にフラグを立てて、次の反復(カレンダーの翌日)にフラグを付けることは可能ですか?テストでは、このフラグを考慮して、火曜日にfalseではなくtrueを返すことができます。そもそも?
さて、私は十分に明確だったと思いますか?英語は私の母国語ではないので、私が使用した用語が正しくない場合はお知らせください。
これについてあなたの助けをどうもありがとう!
セドリック