【问题标题】:How to prevent jQuery uidatepicker from highlighting selected (or current) date in all months of calendar?如何防止 jQuery uidatepicker 在日历的所有月份中突出显示选定(或当前)日期?
【发布时间】:2011-03-31 03:27:30
【问题描述】:

我已经多次查看此插件的选项,但似乎无法找到关闭此行为的方法:当前或选定的日期在小部件的所有月份中都突出显示,而不仅仅是当前月份。比如我选择8月17日,然后提前到9月、10月等,那么这几个月也会选择17日,在我看来这没有任何意义。我无法弄清楚它为什么会这样做,或者如果它是一个功能,甚至是它背后的理由(我想这可能是一个次要问题)。知道如何关闭它吗?所有月份的链接都被分配了相同的 css 类。以下是我正在使用的选项:

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

【问题讨论】:

  • 嗯,这很蹩脚,但绝对是默认行为...希望有人可以帮助您找出解决方法...

标签: jquery datepicker uidatepicker


【解决方案1】:

该错误(或功能,但我希望不是)是在 jQuery UI 的 1.8.4 版本中引入的(因此 D Hoerster 发布的演示有效,因为它使用的是 1.8.2 版本)。它的来源是由 Google 托管的this version 的第 8384 行。它是涵盖日期选择器的实际 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 显然是错误的并且在多个地方被使用。 (事实上​​在以前的版本中没有任何问题,尽管错误的变量被用来突出显示当前日期)我一直在看这段代码太久了,所以我不知道我是对的还是完全错了。尽管如此,对于想要进一步调查它并可能做一个错误报告的人来说,这应该是一个很好的基础。当我有时间(和我的理智恢复)时,我最终会自己做

【讨论】:

    【解决方案2】:

    您是否正在修改 CSS? Here's a jsFiddle 我为一个不同的 SO 问题组合在一起,并针对您列出的日期选择器设置对其进行了修改。我没有看到你描述的行为。我最初的猜测是你在某处覆盖了 CSS。是这样吗?

    希望这会有所帮助!

    【讨论】:

    • 使用 jQuery UI 1.8.4 而不是 1.8.2 你会得到问题中所述的结果 :) 见jsfiddle.net/yt6Rh/4
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多