尝试在更改#tour_region字段后动态更新jQuery Datepicker。我从Salman的Web博客中获取了这些代码并将CSS标识符更改为我的,并且显然也更改了Ajax调用的URL。
当我构建JSON响应时,我使用.ajax调用测试它,但Salman有一个.getJSON响应。
我得到的错误是: “未捕获的TypeError:无法读取未定义的属性'条目'
让我觉得JSON响应可能有问题。我对.getJSON调用不太熟悉。
提前致谢。
$(document).ready(function(){
$(function() {
var dateList = null;
var date1 = new Date;
date1.setHours(0, 0, 0, 0);
date1.setDate(1);
var date2 = new Date;
date2.setHours(0, 0, 0, 0);
date2.setMonth(date2.getMonth() + 12, 0);
$("form #date").datepicker({
minDate: date1,
maxDate: date2,
beforeShowDay: function(date) {
var r = [true, ""];
if (dateList === null) {
r[1] = "dp-highlight-unknown";
} else {
var key = $.datepicker.formatDate("yy-mm-dd", date);
if (key in dateList) {
r[1] = "dp-highlight-available";
r[2] = dateList[key].join(", ");
}
}
return r;
}
});
$("#tour_region").on("change", function(){
var region = $(this).val();
$.getJSON("/dates?region=" + region, {
"alt": "json",
"start-min": $.datepicker.formatDate("yy-mm-dd", date1),
"start-max": $.datepicker.formatDate("yy-mm-dd", new Date(date2.getTime() + 86400000)),
"orderby": "starttime",
"max-results": 100
}, function(data) {
dateList = {};
$.each(data.feed.entry, function(i, entry) {
var key = entry.gd$when[0].startTime.substr(0, 10);
if (key in dateList == false) {
dateList[key] = [];
}
dateList[key].push(entry.title.$t);
});
$("form #date").datepicker("refresh");
});
});
});
});
答案 0 :(得分:0)
这允许日期选择器仅显示从.getJSON返回的日期。谢谢大家。
var dateList = null;
$(function() {
var date1 = new Date;
date1.setHours(0, 0, 0, 0);
date1.setDate(1);
var date2 = new Date;
date2.setHours(0, 0, 0, 0);
date2.setMonth(date2.getMonth() + 12, 0);
$("form #date").datepicker({
minDate: date1,
maxDate: date2,
beforeShowDay: function(date) {
var r = [false, ""];
if (dateList === null) {
r[1] = "dp-highlight-unknown";
} else {
var key = $.datepicker.formatDate("yy-mm-dd", date);
if ($.inArray(key, dateList) != -1) {
r[0] = true;
r[1] = "dp-highlight-available";
}
}
return r;
}
});
$("#tour_region").on("change", function(){
var region = $(this).val();
$.getJSON("/dates?region=" + region, {
"alt": "json",
"start-min": $.datepicker.formatDate("yy-mm-dd", date1),
"start-max": $.datepicker.formatDate("yy-mm-dd", new Date(date2.getTime() + 86400000)),
"orderby": "starttime",
"max-results": 100
}, function(data) {
console.log(data);
dateList = [];
$.each(data, function(i, entry) {
if ($.inArray(entry, dateList) == -1) {
dateList.push(entry);
}
});
$("form #date").datepicker("refresh");
});
});
});