У меня есть jquery datepicker, который по умолчанию отображает текущую дату как полный календарь. Перед тем, как сделать это, я получаю список дней с сервера через ajax дней, которые должны быть выделены для текущего месяца. Код для этого выглядит следующим образом:
$.get("Note/GetActionDates/?orgID=" + orgID + "&month=" + month +"&year=" + year,
null, function(result) {
RenderCalendar(result);
}, "json");
function RenderCalendar(dates) {
$("#actionCal").datepicker({ dateFormat: 'dd/mm/yy', beforeShowDay: function(thedate) {
var theday = thedate.getDate();
if ($.inArray(theday, dates) == -1) {
return [true, "", ""];
}
else {
return [true, "specialDate", "Actions Today"];
}
}
});
}
Это все хорошо, но я бы хотел, чтобы выделенные даты обновлялись, когда пользователь нажимает на другой месяц. Я могу изменить код инициализации jquery datepicker с помощью следующего кода:
onChangeMonthYear: function(year, month, inst) {
//get new array of dates for that month
$.get("Note/GetActionDates/?orgID=" + orgID + "&month=" + month + "&year=" + year,
null, function(result) {
RenderCalendar(result);
}, "json");
}
Но, похоже, это не работает.
Может ли кто-нибудь показать мне, что я делаю не так? Спасибо! :)
ОБНОВЛЕНИЕ - Рабочий код
Спасибо за помощь!
Я настроил код из petersendidit следующим образом, и теперь он работает. Собираюсь добавить немного больше кода для удаления повторяющихся дат из массива дат, но кроме этого все хорошо.
$("#actionCal").datepicker({
dateFormat: 'dd/mm/yyyy',
beforeShowDay: function(thedate) {
var theday = thedate.getDate() + "/" + (thedate.getMonth() + 1) + "/" + thedate.getFullYear();
if ($.inArray(theday, actionCalDates) == -1) {
return [true, "", ""];
} else {
return [true, "specialDate", "Actions Today"];
}
},
onChangeMonthYear: function(year, month, inst) {
dateCount = 0;
getDates(orgID, month, year);
}
});
function getDates(orgID, month, year) {
dateCount += 1;
if (dateCount < 4) {
$.ajax({
url: "Note/GetActionDates/",
data: {
'orgID': orgID,
'month': month,
'year': year
},
type: "GET",
dataType: "json",
success: function(result) {
actionCalDates = actionCalDates.concat(result);
getDates(orgID, month + 1, year);
getDates(orgID, month - 1, year);
}
});
}
}