我正在开发一个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。
我在其他日期选择器中遵循了类似的方式,并且它们工作正常。我只有这个日期选择器的问题。
感谢任何帮助。
答案 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”,然后(再次)设置设置。刷新时,类会保留,因此不会重新创建日期选择器。