1

我有一个加载了事件的日期选择器。当月份更改为另一个月份时,会进行数据库调用以恢复事件并且这工作正常。但是,我需要在日历首次显示以及稍后与用户交互时发生这种情况。这是我的代码,为了简化我的问题,当日历第一次显示在屏幕上时,如何让“getJsonDate”函数运行?我几乎可以肯定这是相当基本的东西,但它并没有在我身上跳出来。

       $(function () {
        function getJsonDate(year, month) {
            var theYear = year;
            var theMonth = month;
            alert('You are in, baby!');
            $.post('GetMonthCalendar', {
                data: { year: theYear, month: theMonth },
                success: function(data) {
                    //TODO: make determination on ResourceScheduleTypeId for correct css
                    var i = 0;
                    for (i = 0; i < data.data.length; i++) {
                        $('.ui-datepicker-calendar td a:exactly(' + data.data[i]['d'] + ')')
                            .css({ color: 'blue' })
                            .attr('href', data.data[i]['link'])
                            .parent().attr('onclick', '');
                    }

                }
            });
        }


        $.expr[":"].exactly = function (el, i, m) {
            var s = m[3];
            if (!s) return false;
            return eval("/^" + s + "$/i").test($(el).text());
        };
        $('#date').datepicker({
            inline: true,
            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());
                getJsonDate(d.getFullYear(), d.getDate());
            },
            onChangeMonthYear: function (year, month, inst) {
                //alert(year + ", " + month);
                getJsonDate(year, month);
            }
        });
    });
4

1 回答 1

0

由于datepicker继承自Widget,我认为您可以添加一个create回调,该回调将在小部件初始化后执行。

$("#date").datepicker({
    // …
    create: function(event, ui) {
        getJsonDate(/* year, month */)
    }
})
于 2012-11-30T19:47:53.377 回答