为什么我不能使用datepicker来处理这个TypeError:o是未定义的错误?

时间:2013-12-11 19:26:30

标签: jquery jquery-ui datepicker

我的页面底部有以下代码(在我关闭body标签之前)

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script src="/js/main.js"></script>

我仔细检查了我的“查看源代码”,以确保链接没有被破坏,所有内容都应该存在。

在我的main.js文件中,我有以下内容:

$(document).ready(function(){
    imp_init_fields();
});

function imp_init_fields() {
    if( $('.datepicker')[0] ) {
        $('.datepicker').datepicker();
    }
}

正如你所看到的,没有什么特别疯狂的,只是设置一个日期选择器,就像我已经做了一百万次。

现在,当我进入相关页面并点击我的文本输入时,会出现日历弹出窗口。但是,只要我尝试与日历交互(更改月份,选择日期或任何内容),就不会发生任何事情,我收到以下错误:

火狐:

  

时间戳:11/12/2013 2:15:31 PM错误:TypeError:o未定义   源文件:   http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js   行:9

铬:

  

未捕获的TypeError:无法读取未定义的属性“设置”

现在我做了一百万次,所以我认为它非常简单。我想也许我有jquery和jquery-ui的冲突版本但是我去了下载遗留代码并且我得到了同样的错误。

我不明白的是,datepicker被初始化了,我可以在点击输入字段时显示它但是一旦我尝试与它交互就会中断...任何想法我在这里做错了什么?

编辑:我用未经明确的代码运行它。

火狐:

  

时间戳:11/12/2013 2:34:45 PM错误:TypeError:inst未定义   源文件:http://code.jquery.com/ui/1.10.3/jquery-ui.js行:8574

第8574行:

inst.selectedDay = inst.currentDay = $("a", td).html();

不幸的是,这并没有告诉我多少。我没有做任何特别花哨的事情。我没有其他的javascript,这是一个非常准确的页面。

1 个答案:

答案 0 :(得分:4)

在@ Melonheadjr44发布了jQuery datepicker returns "inst is null" error when loaded via AJAX的链接后,它让我看看我的页面上是否有两个相互冲突的ID。

原来我做了以下事情:

<label id="client_since">Client since:</label>
<input type="text" id="client_since" name="client_since" class="datepicker" value="" />     

可能不是很清楚,但我不小心用“id”换了标签上的“for”属性。由于jquery使用ID来获取我的输入框,它实际上是拉动标签而没有找到它期望找到的属性/选项。