我一直在使用带有Bootstrap的jQuery UI,我似乎遇到了一个我以前没有过的问题。我不确定发生了什么变化;我尝试过设置不同版本的jQuery,同时我没有更新jQuery UI。所以我不确定是什么破了。
当我点击datepicker中的任何日期时,控制台出错:
Uncaught TypeError: Cannot set property 'currentDay' of undefined
代码非常简单,正如人们对日期选择器所期望的那样:
$(".datepicker").datepicker({
dateFormat: 'dd-mm-yy'
});
使用以下HTML:
<input type="text" class="datepicker" />
这是一个应该报告的错误(因为没有其他谷歌匹配出现)或者是我错过了什么?
答案 0 :(得分:125)
我找到了解决方案。经过长时间的调试后,我发现有一个<div>
具有完全相同的ID
,高于输入字段。因此,脚本获取了包含ID
的第一个实例,并选择了DIV
而不是input
字段。
我删除/重命名了DIV
,它再次正常运行。
答案 1 :(得分:18)
上面的jQuery datepicker错误通常是由具有相同ID的重复控件引起的,无论您是使用id还是使用其他选择器(如css类或字段名称)来实例化它。
答案 2 :(得分:1)
我也遇到了这个错误。我发现在表格的其他地方我有一些标签&#39; for&#39;与表单输入上的id不匹配的属性 - 似乎这可能会混淆datepicker。一旦我解决了这些问题,一切正常,错误就消失了。以Andreas&#39;建议(+1为此!)并验证您的表单 - Chris Pederick的Web开发人员工具栏为您提供了一种简单的验证方法。
答案 3 :(得分:1)
放一个选择器。
<script> $("#formID #duplicatedId").datepicker({language: 'he'});
</script>
FormID:包含输入的表单的ID。
duplicatedId:输入元素的ID。
答案 4 :(得分:0)
可能是两个具有相同类但没有不同ID的输入框,并且您正在尝试使用日期选择器。如果它有两个不同的ID,它将起作用。
答案 5 :(得分:0)
我也遇到了这个问题,我100%确定我没有使用重复的ID。 经过一些调试后,我发现了一个原因-我使用的是DataTables mod,它复制了tfoot的内容,因此创建了datepicker元素的精确副本。而且我的日期选择器输入行数很短。
解决了以下问题:
table.find("TFOOT").find("TR:first").remove();
哪个叫做AFTER table.DataTable(....)
此操作删除了包含所有内容的原始零高度行;
答案 6 :(得分:0)
在我的情况下,我是从div的隐藏输入字段触发datepicker的,而getPos(a)在变量“ a”上引起了未定义的消息。我尝试过将隐藏的输入字段移到div之外,从而达到了目的。请注意,无论在哪里,jQuery都可以找到输入字段,所以这不是问题-定位问题。希望这对其他人有帮助。
答案 7 :(得分:0)
我通过为HTML DOM对象创建新ID解决了这一问题。有重复的ID。 尝试为HTML DOM对象添加新ID。