【问题标题】:Microsoft JScript runtime error: Object doesn't support property or method 'datepicker'Microsoft JScript 运行时错误:对象不支持属性或方法“datepicker”
【发布时间】:2014-02-26 12:06:29
【问题描述】:

我正在使用 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
        };
    }

【问题讨论】:

  • 是的,当然,正如我提到的,没有 customRange 函数 datepicker 可以自己正常工作
  • 对不起,它是一个 asp.net mvc 视图中的脚本
  • 是的,但是 jQuery 执行是在文档加载后发生的吗?例如包裹在$(function(){ do my work here});?
  • 不,不是,如果我尝试将它包装在一个函数中,我会从一开始就遇到同样的错误,即使没有自定义函数,日期选择器也不会运行
  • 是否包含 jQuery UI?

标签: javascript jquery datepicker


【解决方案1】:

如果尚未完成(无法从您的代码中看出),您的 jQuery 应该被包装在一个文档就绪事件中,以确保它在文档就绪后运行。

较新的语法是:

例如

 $(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 优先)。

【讨论】:

  • 仍然不适合我,我认为我在 asp.net mvc 视图中运行它需要做一些事情
  • @Wizeman1986:如果您能够发布输出的完整 HTML 页面,应该很容易发现问题。在 MVC 中运行 jQuery 并没有什么特别之处,因为 MVC 是纯粹的 HTML 生成器。
【解决方案2】:

希望还不算太晚:-)

this链接非常有用-

【讨论】:

    猜你喜欢
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多