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

时间:2014-07-10 01:57:11

标签: jquery datepicker highlight

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

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

例如

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

enter image description here

3 个答案:

答案 0 :(得分:1)

不幸的是,'今天'在DatePicker的HTMLRendering阶段计算,这意味着要覆盖'您需要重新定义_generateHTML $.datepicker方法。我也发现了'今天'其中的按钮的默认状态被此覆盖破坏,因此有必要覆盖该方法。

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

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

<强> jsFiddle Demo

答案 1 :(得分:0)

对@ haxxxton进行小调整,允许您在日期选择器中传递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方法来有条件地使用&#34;今天&#34;日期而不是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()
    /* ... */
}

这里有demo,其中显示了完整的代码和用法: http://jsfiddle.net/NAzz7/5/

答案 2 :(得分:-1)

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