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