TypeError:在Jquery-ui Datepicker中未定义datepicker_instActive

时间:2015-03-30 09:24:20

标签: javascript jquery angularjs jquery-ui datepicker

我已经构建了rails + angular app。在这里我使用了jquery-ui datepicker。我没有找到解决方案为什么我在控制台中出现此错误:

  

TypeError:datepicker_instActive未定义

     

if(!$。datepicker._isDisabledDatepicker(datepicker_instActive.inline?)   datepicke ...

在控制台中。

我的css版本为jQuery UI Datepicker 1.11.2js也是一样的。 jQuery UI Datepicker 1.11.2

当我将光标移动到datepicker小部件时,相同的错误计数会增加。

我认为问题出在Jquery的这个函数中:

function datepicker_handleMouseover() {
    if (!$.datepicker._isDisabledDatepicker( datepicker_instActive.inline? datepicker_instActive.dpDiv.parent()[0] : datepicker_instActive.input[0])) {
        $(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
        $(this).addClass("ui-state-hover");
        if (this.className.indexOf("ui-datepicker-prev") !== -1) {
            $(this).addClass("ui-datepicker-prev-hover");
        }
        if (this.className.indexOf("ui-datepicker-next") !== -1) {
            $(this).addClass("ui-datepicker-next-hover");
        }
    }
}

你有过同样的问题吗?或者任何想法如何解决它。我使用了bootstrap-modal popup,在那种形式中我使用了datepicker。

3 个答案:

答案 0 :(得分:2)

jQuery UI 1.11.4中的问题相同。我们刚刚创建了一个错误票证http://bugs.jqueryui.com/ticket/14578,并希望jQuery团队很快就能修复它。

解决问题,只需

  • 通过自定义下载(https://jqueryui.com/download/),
  • 从jQuery UI网站下载 datepicker组件
  • 从ZIP存档中提取jquery-ui.js并重命名,例如jquery-ui-1.11.4-datepicker-fix.js
  • 在您的模板中使用完整的jQuery UI脚本后立即嵌入脚本,
  • 将空检查添加到函数datepicker_handleMouseover()的第一行,如下所示:

    function datepicker_handleMouseover() {
        if (!datepicker_instActive || !$.datepicker._isDisabledDatepicker( datepicker_instActive.inline? datepicker_instActive.dpDiv.parent()[0] : datepicker_instActive.input[0])) {
        ...
    }
    

不需要对代码进行进一步更改。只需从模板中删除脚本标记,即可在修复错误后轻松删除补丁。

请注意,此解决方法会完全覆盖原始的datepicker插件

答案 1 :(得分:1)

在销毁一个日期选择器之后,再次在另一个日期选择器上调用refresh设置datepicker_instActive,这可能是比修改外部插件代码更可接受的解决方法:

// Delete a datepicker
$('#date1').datepicker('destroy');

// WORKAROUND: Refresh another datepicker until the following is fixed
// http://bugs.jqueryui.com/ticket/14578
$('.hasDatepicker').last().datepicker('refresh');
来自故障单的

Here's an updated Fiddle来演示解决方法。

答案 2 :(得分:0)

当我两次包含jquery-ui时遇到此错误。删除任一实例都解决了它。