我一直忙于为客户创建一个解决方案,但事实证明它比我想象的要困难一些。我正在使用 jQuery Datepicker 小部件从服务器端代码显示日历事件(每月视图)。以下代码中的所有内容都有效,除了 CSS。它没有改变任何东西,似乎我已经尝试了世界上的一切。
日历显示在页面加载 (MVC) 的月视图中,如果用户有事件,则该天应该有不同的背景颜色。此外,当用户每月更改时,会发生相同的逻辑(对服务器的 ajax 调用)。同样,这一切都运行良好。我更改背景颜色的指令不会。
<script type="text/javascript">
$(document).ready(function () {
$.expr[":"].exactly = function (el, i, m) {
var s = m[3];
if (!s) return false;
return eval("/^" + s + "$/i").test($(el).text());
};
var currentYear = (new Date).getFullYear();
var currentMonth = (new Date).getMonth();
function getTheData(year, month) {
var theYear = year;
var theMonth = month;
//alert(theYear + ", " + theMonth);
$.post("GetMeSomeData", { year: theYear, month: theMonth }, function(data) {
//cycle through the dates and address the CSS appropriately
var i = 0;
for (i = 0; i < data.length; i++) {
$('.ui-datepicker-calendar td a:exactly(' + data[i]['d'] + ')')
.css({ backgroundColor: 'blue' });
}
});
}
$('#date').datepicker({
inline: true,
beforeShowDay: getTheData(currentYear, currentMonth),
onSelect: function (dateText, inst) {
Date.prototype.toString = function () { return isNaN(this) ? 'NaN' : [this.getDate(), this.getMonth(), this.getFullYear()].join('/'); };
d = new Date(dateText);
//alert(d.getDate() + ", " + d.getFullYear());
getTheData(d.getFullYear(), d.getDate());
},
onChangeMonthYear: function (year, month, inst) {
//alert(year + ", " + month);
getTheData(year, month);
}
});
});
</script>