非常喜欢datepicker。非常感谢这个伟大的图书馆!
基于此示例(内联日期选择器),我有一个问题:
http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerMultiMonth5.html
我添加了一个“renderCallback”函数来禁用基于复选框的工作日...(例如,当选中saturday-checkbox时,禁用所有星期六)。
使用datePickerMultiMonth()初始化日历时,此功能完全正常。
但是当更改其中一个复选框时,如何刷新内联日历(例如取消选择星期一复选框)?
按原样:当我选择/取消选中一个复选框时,日期选择器保持不变..只有在手动更改到下个月之后,它才会更新并禁用例如所有星期一......这应该在更改星期一复选框时立即发生。
你知道如何更新日期票据吗?非常感谢你的帮助!
干杯, 马库斯
答案 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
函数所必需的。
不幸的是,这确实访问了插件的内部结构,因此在新版本发布时它可能会中断,但是我找不到任何可公开访问的方式来刷新日历。