2010-01-25 46 views
3

真的很喜歡datepicker。非常感謝這個偉大的圖書館!如何刷新datepicker?函數.datePickerMultiMonth()

我已經得到了你在這個例子(在線日期選擇器)的一個問題:

http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerMultiMonth5.html

我加了一個「renderCallback」功能基於複選框禁用工作日...(例如,當星期六勾選勾選禁用顯示的所有星期六)。

使用datePickerMultiMonth()初始化日曆時,此功能非常完美。

但是,當其中一個複選框發生變化時(例如取消選中星期一複選框),如何刷新內聯日曆?

AS-是:當我選擇/取消複選框的日期選擇器保持不變。只有手動更改後到下個月它更新和例如禁用所有星期一......這應該立即發生在改變星期一複選框時。

你知道如何刷新日期選項卡嗎?非常感謝你的幫助!

乾杯, 馬庫斯

回答

1

有一點看看源後,似乎你必須做這樣的事情:

$.event._dpCache[$('.date-pick')[0]._dpId]._applyRenderCallbacks() 

或可能這樣的:

$.event._dpCache[$('.date-pick')[0]._dpId]._rerenderCalendar() 

$.event._dpCache[$('.date-pick')[0]._dpId]部用於獲取所述第一內部的DatePicker對象匹配的CSS​​,這是訪問第需要e內部_applyRenderCallbacks_rerenderCalendar功能。

不幸的是,這樣做訪問插件的內部結構,因此有可能在新版本發佈可能會破裂,但我找不到任何可公開訪問的方式來刷新日曆。

+1

尼斯的偵探工作和良好的解決方法缺乏公衆獲取插件的相關方法。這會一直當問題得到解答時,最好的解決方案。我剛剛更新了插件,以便重新公佈可用的更換方法,這使得更易於維護的解決方案... – vitch 2010-01-25 02:33:58

2

解決此問題的最簡單方法可能是刪除現有日曆並重新渲染它。例如: -

$mm.empty().datePickerMultiMonth({}); 

但是,這也有一些缺點如您的日期選擇器的狀態不能保持(例如顯示的月份,選擇日期等)。

因此,我只是對插件做了一些更改,並在多月採集器上引入了一種新方法:dpmmRerenderCalendar(以及日期選取器本身的相應dpRerenderCalendar)。

你可以看到它的一個例子在這裏的行動:

http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerMultiMonth7.html

,可以從我的站點或googlecode上庫獲取最新的插件代碼。