jQuery UI DatePicker更改突出显示“今天”日期

我想在jQuery Datepicker中明确更改今天突出显示的日期。 我已经尝试设置默认日期,但突出显示的日期仍然是我今天的本地计算机日期。

我想这样做是因为我使用的是自定义时区。 基本上,此自定义时区中的当前年/月/日期与本地计算机的当前日期不同。

例如。

假设今天的日期是2014年10月7日与计算机的日期相同,但使用自定义时区,今天的日期突出显示应该是2014年9月7日:

在此处输入图像描述

不幸的是,’今天’是在DatePicker的HTMLRendering阶段计算的,这意味着为了’覆盖’,你需要重新定义$.datepicker_generateHTML方法。 我也发现它的默认状态中的’今日’按钮被这个覆盖打破了,所以有必要覆盖那个方法。

基本上,datepicker设置一个内部变量,如’tempDate = new Date()’,然后使用它来创建’今天’。 我们所做的只是使用一些时区偏移代码覆盖该变量,其余的自行排序。

在下面的演示中,顶部是appLocalTimezone的变量,将其设置为您想要的时区,它将根据应用更新appLocalTimezone 。 原始代码/答案的所有功劳都在小提琴中

jsFiddle演示

对@ haxxxton的小调整允许你在localToday作为一个选项传入localToday

 // Get users 'today' date var localToday = new Date(); localToday.setDate(tomorrow.getDate()+1); // tomorrow // Pass the today date to datepicker $( "#datepicker" ).datepicker({ showButtonPanel: true, localToday: localToday // This option determines the highlighted today date }); 

我已经覆盖了2个datepicker方法,有条件地使用“今天”日期的新设置而不是new Date() 。 新设置称为localToday

像这样覆盖$.datepicker._gotoToday$.datepicker._generateHTML

 $.datepicker._gotoToday = function(id) { /* ... */ var date = inst.settings.localToday || new Date() /* ... */ } $.datepicker._generateHTML = function(inst) { /* ... */ tempDate = inst.settings.localToday || new Date() /* ... */ } 

这是一个演示 ,显示完整的代码和用法: http//jsfiddle.net/NAzz7/5/

使用$(“。selector”)。datepicker({defaultDate:-1});