我已多次浏览此插件的选项,似乎无法找到关闭此行为的方法:当前或所选日期在窗口小部件的所有月份中突出显示,而不仅仅是当前月份.例如,如果我选择8月17日然后提前到9月,10月等等,那么在那些月份也会选择17日,这在我看来毫无意义.我无法弄清楚为什么它会这样做,或者甚至是它背后的理由如果它是一个特征(我想这可能是次要问题).知道怎么关掉它吗?所有月份的链接都被分配了相同的css类.以下是我正在使用的选项:
var dates = $("#checkin").datepicker({
changeMonth: true,
numberOfMonths: 2,
dateFormat: 'M d, yy'
});
最佳答案 这个bug(或功能,但我希望不是)在jQuery UI的1.8.4版本中引入(因此D Hoerster发布的演示工作,因为它使用的是1.8.2版本).它的来源是谷歌在
this version年的第8384行.它是覆盖datepicker的实际HTML生成的部分.它在一个循环中,每个月都要迭代绘制.它读
var selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));
现在,drawmonth / year是当前正在绘制的月份(duh),因此很明显它正在发生什么.结果是你说明的问题 – 如果你在一个月内选择第17个,selectedDate将被设置为每个月的第17个月你迭代它们,这些将突出显示.通过变量名称(selectedDate)判断它的语义意义应该改为陈述
var selectedDate = this._daylightSavingAdjust(new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay));
有趣的是,这个错误也出现在1.8.2版本中,但突出显示的代码并没有在以前的版本中使用它.在1.8.2中,突出显示当前日期(如第8446行):
(printDate.getTime() == currentDate.getTime() ? ' ui-state-active' : '') + // highlight selected day
看一下代码,很明显它应该与1.8.4版本一样(使用selectedDate而不是currentDate):
(printDate.getTime() == selectedDate.getTime() ? ' ui-state-active' : '') + // highlight selected day
所以奇怪的是,没有更多的错误发生,因为selectedDate显然是错误的并且被用在了几个地方. (事实上,在前一版本中没有任何错误,尽管使用了错误的变量来突出显示当前日期)我现在已经看了很长时间这段代码,所以我不知道我是对的还是完全错了.然而,对于想要进一步调查并可能进行错误报告的人来说,这应该是一个很好的基础.当我得到时间(我的理智回归)时,我最终会自己做