【问题标题】:how to refresh datepicker? function .datePickerMultiMonth()如何刷新日期选择器?函数 .datePickerMultiMonth()
【发布时间】:2010-01-25 00:03:19
【问题描述】:

真的很喜欢日期选择器。非常感谢这个伟大的图书馆!

根据这个例子(内联日期选择器),我有一个问题要问你:

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

我添加了一个“rendercallback”函数,以基于复选框禁用周日...(例如,选中星期六 - 复选框时禁用显示的所有星期六)。

这在使用 datePickerMultiMonth() 初始化日历时非常有效。

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

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

您知道如何刷新 datepicket 吗?非常感谢您的帮助!

干杯, 马库斯

【问题讨论】:

    标签: jquery datepicker


    【解决方案1】:
    .datepicker( "refresh" )
    

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

    【讨论】:

    • 清除旧设置删除日期选择器并重新创建它可能是最好的选择。只需使用 .datepicker("destroy"),然后在回调中重新初始化即可。
    【解决方案2】:

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

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

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

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

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

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

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

    【讨论】:

      【解决方案3】:

      在查看了源代码之后,您似乎必须执行以下操作:

      $.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 函数所必需的。

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

      【讨论】:

      • 很好的侦探工作和很好的解决方法,因为缺乏对插件相关方法的公共访问权限......这将是回答问题时的最佳解决方案。我刚刚更新了插件,以便重新渲染方法是公开可用的,这使得解决方案更易于维护......
      猜你喜欢
      • 2012-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多