如何防止jQuery uidatepicker突出显示日历所有月份中的选定(或当前)日期?

如何防止jQuery uidatepicker突出显示日历所有月份中的选定(或当前)日期?,jquery,datepicker,uidatepicker,Jquery,Datepicker,Uidatepicker,我已经检查过这个插件的选项好几次了,但似乎找不到一种方法来关闭这个行为:当前或选定的日期在小部件的所有月份都突出显示,而不仅仅是当前月份。例如,如果我选择8月17日,然后提前到9月、10月等,那么在这些月份也会选择17日,这在我看来毫无意义。我不明白它为什么这样做,或者如果它是一个特性,甚至不知道它背后的原理(我想这可能是第二个问题)。知道怎么关掉吗?所有月份的链接都被分配了相同的css类。以下是我正在使用的选项: var dates = $("#checkin").datepicker({

我已经检查过这个插件的选项好几次了,但似乎找不到一种方法来关闭这个行为:当前或选定的日期在小部件的所有月份都突出显示,而不仅仅是当前月份。例如,如果我选择8月17日,然后提前到9月、10月等,那么在这些月份也会选择17日,这在我看来毫无意义。我不明白它为什么这样做,或者如果它是一个特性,甚至不知道它背后的原理(我想这可能是第二个问题)。知道怎么关掉吗?所有月份的链接都被分配了相同的css类。以下是我正在使用的选项:

var dates = $("#checkin").datepicker({
    changeMonth: true,
    numberOfMonths: 2,
    dateFormat: 'M d, yy'
});

你在修改CSS吗?这是我为一个不同的SO问题准备的,我根据您列出的日期选择器设置对其进行了修改。我看不到你描述的行为。我的初步猜测是您正在覆盖某个CSS。是这样吗

希望这有帮助

这个bug(或特性,但我希望不是)是在jQueryUI的1.8.4版本中引入的(因此,D Hoerster发布的演示是有效的,因为它使用的是1.8.2版本)。它的来源是在线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行):

看一下代码,很明显它应该与1.8.4版本一样(使用
selectedDate
而不是
currentDate
):



所以奇怪的是,没有更多的bug发生,因为
selectedDate
显然是错误的,并且被用于多个地方。(事实上,在上一个版本中没有任何错误,尽管使用了错误的变量来突出显示当前日期)我已经看了这段代码太久了,所以我不知道我是对的还是完全错了。尽管如此,这对于希望进一步调查并可能进行bug报告的人来说应该是一个很好的基础。当我有时间(恢复理智)的时候,我最终会自己做这件事。

嗯,这很蹩脚,但肯定是默认行为。。。希望有人能帮助您找到解决方法…使用jQueryUI1.8.4而不是1.8.2,您将得到问题中所述的结果:)请参见
(printDate.getTime() == currentDate.getTime() ? ' ui-state-active' : '') + // highlight selected day
(printDate.getTime() == selectedDate.getTime() ? ' ui-state-active' : '') + // highlight selected day