我正在使用JQuery datepicker並將其顯示給用戶,禁用了一些日子。可以說,我的網站中的某些用戶可以將某些日程標記爲「可用」,即他們的工作時間。它們的可用性必須在日曆中反映給其他用戶。JQuery datepicker - 設置回調訂單
我已經在網上搜索了這個,看起來應該使用beforeShowDay
這個事件,這正是我所做的。簡而言之,當datepicker加載時,我打電話給服務器,解析json結果(日期列表),將它推入一個數組中,在beforeShowDay
中讀取數據,在這裏我檢查數組是否在一天。
問題出現在我改變月份的時候。在onChangeMonthYear
中,我再次打電話給服務器,並檢索可用於這個新月份的信息。不過,看起來beforeShowDay
在之前被稱爲,這意味着沒有加載的可用性,並且日曆什麼也沒有顯示。下面是一些代碼:
var dates = [];
$(document).ready(function() {
var today = new Date();
$.post("/AgendaApi/Day/" + today , null, function(json) {
$.each(json, function(index, result) {
dates.push(result.AvailableDate);
});
}, "json");
});
$(document).ready(function() {
$('#date').datepicker({
minDate: new Date(),
dateFormat: 'dd-mm-yy',
onChangeMonthYear: function(year, month, thisCalendar) {
$.post("/AgendaApi/Day/01-" + month + "-" + year, null, function(json) {
$.each(json, function(index, result) {
dates.push(result.AvailableDate);
});
}, "json");
},
beforeShowDay: function(date) {
if ($.inArray(date, dates) > -1) {
return [true, ''];
}
return [false, ''];
}
});
});
在上面的代碼我留下了一些特定文化的最新分析和所有的,但你得到的總體思路。我該如何解決這個問題?因爲我想要的是,如果用戶更改月份,我首先獲取該月的所有可用日期,然後然後日曆被「繪製」。而不是相反。我使用的是asp.net MVC,但這並不重要。非常感謝!
您看到了什麼影響?是啓用還是禁用所有日期? – scottm 2009-10-13 17:17:43
他們都被禁用。這是合乎邏輯的,因爲在'下個月'還沒有任何日子。該數組僅在onChangeMonthYear被調用後填充,這是在* beforeShowDay之後*,不幸的。 – Razzie 2009-10-13 17:41:33