如何刷新datepicker? function .datePickerMultiMonth()

真的很喜欢datepicker。 非常感谢这个伟大的图书馆!

基于此示例(内联日期选择器),我有一个问题要问你:

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

我添加了一个“renderCallback”函数来禁用基于复选框的工作日……(例如,当选中saturday-checkbox时,禁用所有星期六显示)。

使用datePickerMultiMonth()初始化日历时,这非常正常。

但是,当其中一个复选框被更改时,如何刷新内联日历(例如取消选择星期一复选框)?

原样:当我选择/取消选择一个复选框时,日期选择器保持不变..只有在手动更改到下个月后才更新并禁用例如所有星期一……这应该在更改星期一复选框时立即发生。

你知道如何更新日期票据吗? 非常感谢你的帮助!

干杯,马库斯

.datepicker( "refresh" ) 

您可以在http://jqueryui.com/demos/datepicker/#method-refresh上找到它,点击“方法”标签

解决问题的最简单方法可能是删除现有日历然后重新呈现。 例如:

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

但是,这有一些缺点,因为日期选择器的状态不会被维护(例如显示月份,选定日期等)。

所以我只是对插件进行了一些更改,并引入了一个新方法: dpmmRerenderCalendar选择器上的dpmmRerenderCalendar (以及日期选择器本身的相应dpRerenderCalendar )。

你可以在这里看到它的一个例子:

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

并且可以从我的站点或googlecode存储库中获取最新的插件代码。

看了一下源代码之后,你似乎必须做这样的事情:

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

或者可能这样:

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

$.event._dpCache[$('.date-pick')[0]._dpId]部分用于获取与'.date-pick'匹配的第一个内部DatePicker对象,这是访问内部_applyRenderCallbacks_rerenderCalendar函数。

不幸的是,这确实访问了插件的内部结构,因此在新版本发布时它可能会中断,但是我找不到任何可公开访问的方式来刷新日历。