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});