我已實施代碼以禁用使用beforeShow和beforeShowDay回調Jquery的日曆禁止使用beforeShow和beforeShowDay
以下代碼是用於結合日曆輸入的日期的日期
$("#start_on").datepicker({
onSelect: function(date) {
date_check(date);
}, minDate: 0, dateFormat: "yy-mm-dd",
beforeShow: get_booked,
beforeShowDay: disable_if_not_available
});
是這是結合日曆元件
回調beforeShow
function get_booked(inpput, inst) {
var D = new Date();
var month = (inst.selectedMonth == 0 ? D.getMonth() : inst.selectedMonth) + 1;
var year = (inst.selectedYear == 0 ? D.getYear() : inst.selectedYear);
dis_date = new Array();
$.ajax({
url: BASE_URL + "contest/get_booked",
data: {year: year, month: month, id:<?php echo (isset($contest_data->id)) ? $contest_data->id : 0; ?>},
dataType: "json", type: "POST",
success: function(data) {
for (var d in data) {
var D = data[d];
var start = D.start_on;
var d = start.split("-");
var sD = new Date(d[0], d[1] - 1, d[2]);
var end = D.end_on;
var d = end.split("-");
var eD = new Date(d[0], d[1] - 1, d[2]);
while (sD <= eD) {
dis_date.push(sD.getFullYear() + "-" + (sD.getMonth() + 1) + "-" + sD.getDate());
sD.setDate(sD.getDate() + 1);
}
}
}
});
}
回調beforeShowDay
function disable_if_not_available(date) {
var y = date.getFullYear(), m = date.getMonth() + 1, d = date.getDate();
return [dis_date.indexOf(y + "-" + m + "-" + d) == -1];
}
問題,這是disable_if_not_available
獲取調用之前dis_date
得到來自get_booked
填補。目前disable_if_not_available
回報總是正確的,因爲dis_date
是空的,所以我想要做的是調用/返回disable_if_not_available
後,纔得到get_booked
響應,請詢問是否有任何疑問
我也想更新當日歷月份發生變化時 –
您可以做的是當您在輸入字段中單擊時,而不是顯示日曆,您可以進行ajax調用並填充全局變量。完成後,您可以使用 $(「#start_on」)。datepicker(「show」);打開Datepicker。 – user3204547