0

我一直忙于为客户创建一个解决方案,但事实证明它比我想象的要困难一些。我正在使用 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>
4

0 回答 0