我已多次浏览此插件的选项,似乎无法找到关闭此行为的方法:当前或所选日期在窗口小部件的所有月份中突出显示,而不仅仅是当前月份。例如,如果我选择8月17日然后提前到9月,10月等等,那么在那些月份也会选择17日,这在我看来毫无意义。我无法弄清楚为什么它会这样做,或者甚至是它背后的理由如果它是一个特征(我想这可能是次要问题)。知道怎么关掉它吗?所有月份的链接都被分配了相同的css类。以下是我正在使用的选项:
var dates = $("#checkin").datepicker({
changeMonth: true,
numberOfMonths: 2,
dateFormat: 'M d, yy'
});
答案 0 :(得分:2)
错误(或功能,但我希望不是)在jQuery UI的1.8.4版本中引入(因此D Hoerster发布的演示工作,因为它使用的是1.8.2版本)。它的来源位于Google托管的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
显然是错误的并且被用在了几个地方。 (事实上,在前一版本中没有任何错误,尽管使用了错误的变量来突出显示当前日期)我现在已经看了很长时间这段代码,所以我不知道我是对的还是完全错了。然而,对于想要进一步调查并可能进行错误报告的人来说,这应该是一个很好的基础。当我得到时间(并恢复理智)时,我会自己做到这一点
答案 1 :(得分:0)
你在修改CSS吗? Here's a jsFiddle我为了一个不同的SO问题而组合在一起,我为你列出的日期选择器设置修改了它。我没有看到你描述的行为。我最初的猜测是你在某处覆盖了CSS。是这样的吗?
希望这有帮助!