2014-07-10 186 views
1

我想顯式更改jQuery Datepicker中突出顯示的今天日期。我已經嘗試設置默認日期,但突出顯示的日期仍然是我本地計算機的日期,即今天。jQuery UI DatePicker更改突出顯示「今天」日期

我想這樣做,因爲我正在使用自定義時區。基本上這個自定義時區中的當前年/月/日與本地計算機的當前日期不同。

例如,

說今天的日期是2014年7月10日同我的電腦的日期,但使用自定義時區,今天的日期加亮應該是2014年7月9日:

enter image description here

+0

的可能重複( http://stackoverflow.com/questions/2516199/jquery-datepicker-change-today-date) –

+0

也是一堆http://stackoverflow.com/questions/15005263/how-to-change-default-highlighted-date -in-日期選擇器? –

回答

1

不幸的是,'今日'是在DatePicker的HTMLRendering階段計算的,這意味着爲了'重寫'您需要重新定義$.datepicker_generateHTML方法。我還發現,它的默認狀態中的「今日」按鈕被這個覆蓋打破,所以有必要重寫該方法。

基本上,datepicker設置一個像這樣的'tempDate = new Date()'的內部變量,然後使用它來創建'今天'。我們所做的就是用一些時區偏移代碼覆蓋該變量,其餘的則自行排列。

在下面的演示中,頂部是一個變量appLocalTimezone,將其設置爲您所需的時區,並且會根據應用更新日期選擇器。對於原代碼的所有信用卡/答案都在撥弄

jsFiddle Demo

+0

Whe,看到_generateHTML覆蓋後我的眼睛受傷。它的工作原理雖然如此,我接受這個答案,除非真的有更好的方法。謝謝! – superigno

+0

@gino是啊,就像我說的那樣,它的不幸之處在於它的渲染階段:( – haxxxton

-1

使用$( 「.selector」).datepicker({defaultDate:-1});

+0

這隻會改變打開日期選擇器時自動選擇哪個日期(來自docs:「如果該字段爲空,請將日期設置爲在首次打開時突出顯示」)。 OP是問如何覆蓋哪個日期設置爲'今天' – haxxxton

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層日期選擇器的方法來有條件地使用新設置爲「今天」時代,而不是一個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這顯示了完整的代碼和用法:[?jQuery的日期選擇器 - 改變 「今天」 日期] http://jsfiddle.net/NAzz7/5/

相關問題