JqueryUI Datepicker:未捕获TypeError:无法读取undefined的属性'settings'?

时间:2014-01-08 05:46:12

标签: javascript jquery jquery-ui

我正在开发一个asp.net MVC4项目,我使用了很多JqueryUI datepicker。

对于我的一个日期选择器,当我试图点击datepicker图像时,我收到一些错误,

Uncaught TypeError: Cannot read property 'settings' of undefined                jquery-ui-1.10.3.min.js:9

Html

<div>
<input type="text" id="tsDte"  style="font-size: 14px;width: 50%" >              
                <img src="~/Images/dayPicker.png" onclick="tsDatePickerClick()" style="vertical-align:bottom"/>
</div>

的Javascript

var currentDate = new Date();

$("#tsDte").datepicker({
    dateFormat: 'yy-mm-dd',
    maxDate: 0,
    changeYear: true 
}).attr('readonly', 'readonly');
$("#tsDte").datepicker("setDate", currentDate);


function tsDatePickerClick() {
    $("#tsDte").datepicker('show');
}

这里我有一个Textfield和一个datepicker图像。当我点击datepicker图像时,会弹出datepicker。

我在其他日期选择器中遵循了类似的方式,并且它们工作正常。我只有这个日期选择器的问题。

感谢任何帮助。

6 个答案:

答案 0 :(得分:25)

如果您尝试在具有类&#34; hasDatepicker&#34;的输入字段上打开日期选择器,则会显示相同的错误。分配。只需在html中删除此类。

在:

<input type="text" value="01/01/2014" class="hasDatepicker">

后:

<input type="text" value="01/01/2014">

答案 1 :(得分:7)

我认为您的日期选择器未正确创建,因此当您致电show时,它需要settings个对象。

可能你没有在$(document).ready内创建它,你应该:

$(document).ready(function(){      //Add this line (and it's closing line)
    var currentDate = new Date();

    $("#tsDte").datepicker({
        dateFormat: 'yy-mm-dd',
        maxDate: 0,
        changeYear: true 
    }).attr('readonly', 'readonly');
    $("#tsDte").datepicker("setDate", currentDate);
});

希望这会有所帮助。干杯

答案 2 :(得分:7)

您正在加入jquery-ui-1.10.3.min.js库。

您的问题是由复制jQuery UI核心脚本引起的。(检查您是否包含jquery-ui-1.10.3.drag-drop.min.js等任何其他库。

只加载一次,您的问题就会消失。

答案 3 :(得分:0)

在我的情况下,这是因为我有一个标识为date的范围,输入具有相同的ID。为输入提供不同的ID可以解决问题。

答案 4 :(得分:0)

有同样的问题,因为我有两个     @ Html.TextBoxFor(m =&gt; m.StartDate,&#34; {0:dd / MM / yyyy}&#34;,new {@class =&#34; DatePicker&#34;}) 和     @ Html.HiddenFor(m =&gt; m.StartDate)

我的观点采用相同的形式。

答案 5 :(得分:0)

刷新页面时,您需要删除类“hasDatepicker”,然后(再次)设置设置。刷新时,类会保留,因此不会重新创建日期选择器。