Microsoft JScript运行时错误:对象不支持属性或方法'datepicker'

时间:2014-02-26 12:06:29

标签: javascript jquery datepicker

我正在使用jquery datepicker,我正在调用一个名为customRange的自定义函数。

没有这个功能,datepicker绝对可以。

运行该功能后,我收到错误:

if ($("#EndDate").datepicker("getDate") != null) {

“Microsoft JScript运行时错误:对象不支持属性或方法'datepicker'”

为什么会这样?

    $('#StartDate, #EndDate').datepicker({
        //dateFormat: 'dd/mm/yy',
        hourMin: 9,
        hourMax: 17,
        //minDate: '0',
        beforeShowDay: $.datepicker.noWeekends,
        beforeShow: customRange,
        firstDay: 1,
        changeFirstDay: false,

    });

    function customRange(input) {
        var min = new Date(2008, 11 - 1, 1), //Set this to your absolute minimum date
            dateMin = min,
            dateMax = null,
            dayRange = 6; // Set this to the range of days you want to restrict to

        if (input.id === "StartDate") {
            if ($("#EndDate").datepicker("getDate") != null) {
                dateMax = $("#EndDate").datepicker("getDate");
                dateMin = $("#EndDate").datepicker("getDate");
                dateMin.setDate(dateMin.getDate() - dayRange);
                if (dateMin < min) {
                    dateMin = min;
                }
            }
            else {
                dateMax = new Date; //Set this to your absolute maximum date
            }
        }
        else if (input.id === "EndDate") {
            dateMax = new Date; //Set this to your absolute maximum date
            if ($("#StartDate").datepicker("getDate") != null) {
                dateMin = $("#StartDate").datepicker("getDate");
                var rangeMax = new Date(dateMin.getFullYear(), dateMin.getMonth(), dateMin.getDate() + dayRange);

                if (rangeMax < dateMax) {
                    dateMax = rangeMax;
                }
            }
        }
        return {
            minDate: dateMin,
            maxDate: dateMax
        };
    }

2 个答案:

答案 0 :(得分:0)

如果尚未完成(无法从您的代码中判断),您的jQuery应该包含在文档就绪事件中,以确保它在文档准备好后运行。

较新的语法是:

e.g。

 $(function(){
    $('#StartDate, #EndDate').datepicker({
        //dateFormat: 'dd/mm/yy',
        hourMin: 9,
        hourMax: 17,
        //minDate: '0',
        beforeShowDay: $.datepicker.noWeekends,
        beforeShow: customRange,
        firstDay: 1,
        changeFirstDay: false,

    });
  });

否则beforeShow触发太早,没有任何东西(包括jQueryUI)可以使用。

这个JSFiddle似乎可以正常使用你现有的代码(包装在启动时):

http://jsfiddle.net/TrueBlueAussie/F9F28/1/

您是否按正确的顺序包含了jQuery和jQuery UI? (jQuery第一)。

答案 1 :(得分:0)

我希望现在还为时不晚: - )

this链接非常有用 -