我在表单上有一个使用Knockout JS构建的日期选择器。 它一直工作到最近,但现在不是。
当您点击图标打开日期选择器时,它只显示一个月:2021年6月,并且甚至不让您离开那个月。对于表单上的所有日期字段都是如此。
这种情况发生在Google Chrome和Firefox中,每个版本都有最新版本。 在Firefox中使用Firebug,我可以看到页面上没有JavaScript错误。
这里是Firebug中显示的两个表格行的HTML,其中一个是“开始日期”和“开始日期”。和一个开始的条目打开':
<tr>
<th>Start Date</th>
<td data-bind="text: niceDate(StartDate())">05-03-2016 00:00:00</td>
<th>Finish Date</th>
<td data-bind="text: niceDate(FinishDate())">06-03-2016 00:00:00</td>
</tr>
<tr class="entries-open">
<th>
<label>Entries Open</label>
</th>
<td>
<input id="dp1452774306035" maxlength="9" size="10" name="ko_unique_20" class="jq-date hasDatepicker" data-bind="value: niceDate(EntriesOpen()), uniqueName: true" data-field="EntriesOpen" type="text">
<img title="..." alt="..." src="/asp-net/protected/events/admin/calendar_icon.gif" class="ui-datepicker-trigger"></td>
<th>
<label>Late Entry Surcharge Date</label>
</th>
<td>
<input id="dp1452774306036" maxlength="9" size="10" name="ko_unique_21" class="jq-date hasDatepicker" data-bind="value: niceDate(EntriesClose()), uniqueName: true" data-field="EntriesClose" type="text">
<img title="..." alt="..." src="/asp-net/protected/events/admin/calendar_icon.gif" class="ui-datepicker-trigger"></td>
</tr>
Knockout JS的JSON日期如下:
"StartDate": "2016-03-18T00:00:00",
"FinishDate": "2016-03-20T00:00:00",
"BallotDate": "2016-02-26T00:00:00",
"EntriesOpen": "2016-02-12T00:00:00",
"EntriesClose": "2016-03-08T00:00:00",
[编辑]
为了确认,这是jQuery UI日期选择器。我在用 版本1.8.9但我已经尝试升级到jQuery UI 1.11.4但是 这还没有解决。我使用的是jQuery 1.6.1。这不是最新版本,但在网站上使用时需要更新更新工作。
我尝试过不同的日期格式 - 以及原始格式 &#34; DD-MM-YYYY HH:mm:ss&#34;,我也尝试过:
这些都没有任何影响
日期选择器中的所有元素在显示时都具有“ui-state-disabled&#39;类,这可以解释为什么它不会对鼠标点击做出反应来改变日期,而不是为什么它首先被禁用
[编辑2]
虽然它至少在12个月内没有变化,但似乎data-field="EntriesOpen"
部分归咎于此。删除此标记会导致现有日期正确显示,并且日期选择器可以正常工作。
当然,有一个问题。 Knockout使用data-field
属性来跟踪哪些字段已更改。没有这个属性,当我点击按钮保存更改时,它告诉我没有更改表单,如果我所做的只是更改日期。
感谢您的帮助!