jquery の datepicker を使用して日付を選択していて、いくつかの日付を強調表示したいのですが、beforeShowDayで奇妙な問題が発生しています。
ページが読み込まれると、json データが読み込まれたように見えますが、入力ボックスをクリックして日付ピッカーが表示されても、何も強調表示されません。前の月または前の月をクリックすると、前月のデータがロードされます (たとえば、入力をクリックします -> 日付ピッカーが表示されます -> ハイライトなし -> 翌月をクリックします -> 前月のデータがハイライト表示されます)...
私は長い間グーグルで検索し、すべての前にデータがロードされているかどうかを確認しましたが、どういうわけかこの動作は変わっていません. どちらの日付ピッカーでも同じ問題が発生します。
(jquery-ui 日付ピッカー 1.10.1、jquery 1.9.1)
どのヒントも嬉しい!
var resDates;
var done = false;
function markDate(date) {
var ret = [true, 'free'];
if (!done) {
$.ajax({
dataType: "json",
url: "modules/OutShop/getReservations.php",
data: {item_id: $("#item-id").val()},
async: false,
success: function (dates) {
resDates = dates;
done = true;
}
});
}
$.each(resDates, function(key, value) {
var d = (date.getFullYear() + "-" + ("0" + date.getMonth()).slice(-2) + "-" + ("0" + date.getDate()).slice(-2));
if (d == value["day"]) {
//$("body").append("d: " + d + ", v: " + value["day"] + ", s: " + value["status"] + " ");
//$("body").append("s: " + value["status"] + " ");
if (value["status"] == "1")
ret = [false, 'marked'];
else if (value["status"] == "2")
ret = [false, 'reserved'];
else
ret = [true, 'free'];
}
});
return ret;
}
$(document).ready(function() {
if (!done) {
$.ajax({
dataType: "json",
url: "modules/OutShop/getReservations.php",
data: {item_id: $("#item-id").val()},
async: false,
success: function (dates) {
resDates = dates;
//done = true;
}
});
}
$("#item-datepicker-min").datepicker({
showButtonPanel: true,
defaultDate: +3,
minDate: +3,
beforeShowDay: markDate,
onSelect: function(selectedDate) {
$("#item-datepicker-max").datepicker("option", "minDate", selectedDate);
}
});
$("#item-datepicker-max").datepicker({
showButtonPanel: true,
minDate: +3,
defaultDate: +6,
beforeShowDay: markDate,
onSelect: function(selectedDate) {
$("#item-datepicker-min").datepicker("option", "maxDate", selectedDate);
}
});
});
EDIT 詳細情報: これは、ajax 応答から取得した json オブジェクトの例です。
[{"ステータス":3,"日":"2013-04-10"},{"ステータス":3,"日":"2013-04-11"},{"ステータス":3,"日":"2013-04-12"},{"状態":3,"日":"2013-04-13"},{"状態":2,"日":"2013-04-10"} ,{"状態":2,"日":"2013-04-11"},{"状態":2,"日":"2013-04-12"},{"状態":2,"日":"2013-04-13"}]