49

我一直在使用带有 Bootstrap 的 jQuery UI,我似乎遇到了一个我以前没有遇到过的问题。我不确定发生了什么变化。我尝试过设置不同版本的 jQuery,同时我没有更新 jQuery UI。所以我不确定是什么坏了。

当我单击日期选择器中的任何日期时,来自控制台的错误返回:

Uncaught TypeError: Cannot set property 'currentDay' of undefined 

该代码相当简单,正如人们对日期选择器所期望的那样:

$(".datepicker").datepicker({
dateFormat: 'dd-mm-yy'
}); 

使用以下 HTML:

<input type="text" class="datepicker" />

这是一个应该报告的错误(因为没有其他谷歌匹配出现)还是我错过了其他东西?

4

8 回答 8

144

我找到了解决方案。经过长时间的调试,我发现有一个<div>完全相同的ID,位于高于输入字段的位置。因此,脚本采用了第一个包含 的实例ID并选择了DIV而不是input字段。

我删除/重命名了DIV它,它再次正常工作。

于 2013-07-23T09:43:36.070 回答
21

上面的 jQuery datepicker 错误通常是由具有相同 ID 的重复控件引起的,无论您是使用 id 还是其他选择器(如 css 类或字段名称)来实例化它。

于 2013-11-27T21:48:46.410 回答
2

我通过为 HTML DOM 对象创建新 ID 解决了这个问题。有重复的 ID。尝试为 HTML DOM 对象添加新 ID。

于 2020-06-29T08:10:21.273 回答
1

我也有这个错误。我发现在表单的其他地方我有一些标签“for”属性与表单输入上的 id 不匹配 - 似乎这也可能会混淆 datepicker。一旦我修复了这些,一切正常,错误就消失了。接受 Andreas 的建议(为此 +1!)并验证您的表单 - Chris Pederick 的 Web 开发人员工具栏为您提供了一种简单的方法来进行验证。

于 2014-10-12T15:57:19.317 回答
1

放一个选择器。

<script>  $("#formID #duplicatedId").datepicker({language: 'he'});
</script>

FormID:包含输入的表单的 ID。

duplicatedId:输入元素的 ID。

于 2015-10-28T11:23:50.623 回答
1

在我的情况下,我从 div 中针对隐藏的输入字段触发 datepicker,而 getPos(a) 导致变量“a”上出现未定义的消息。我尝试将隐藏的输入字段移到 div 之外,并且成功了。请注意,无论输入字段在哪里,jQuery 都可以找到输入字段,所以这不是问题 - 它与定位有关。希望这对其他人有帮助。

于 2018-11-14T16:03:48.530 回答
0

可能是两个具有相同类但没有不同 ID 的输入框,并且您正在尝试使用日期选择器。如果它在那里给出两个不同的 id 它将起作用。

于 2015-08-07T10:56:58.590 回答
0

我也遇到过这个问题,我 100% 确定我没有使用重复的 id。经过一些调试,我发现了一个原因——我使用了 DataTables mod,它复制了 tfoot 的内容,从而创建了 datepicker 元素的精确副本。我在 tfoot 行中有这个 datepicker 输入。

解决了这个问题:

table.find("TFOOT").find("TR:first").remove();

这被称为 AFTER table.DataTable(....)

这删除了包含所有内容的原始零高度行;

于 2018-09-10T09:09:22.003 回答