如何刷新datepicker? function .datePickerMultiMonth()

时间:2010-01-25 00:03:20

标签: jquery datepicker

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

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

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

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

使用datePickerMultiMonth()初始化日历时,此功能完全正常。

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

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

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

干杯, 马库斯

3 个答案:

答案 0 :(得分:10)

.datepicker( "refresh" )

您可以在http://jqueryui.com/demos/datepicker/#method-refresh找到它 单击“方法”选项卡

答案 1 :(得分:2)

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

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

然而,由于日期选择器的状态未得到维护(例如显示月份,选定日期等),因此存在一些缺点。

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

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

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

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

答案 2 :(得分:1)

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

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

或者可能是这样:

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

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

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