【问题标题】:Jquery Datepicker trigger after changing month (after month renders)更改月份后的Jquery Datepicker触发器(月份渲染后)
【发布时间】:2010-02-22 17:04:13
【问题描述】:

我想突出显示当月的某些日子。我可以在第一个月执行此操作,但不能在单击“下个月”或“上个月”后的新月份执行此操作。我尝试使用 onChangeMonthYear 事件,但这会在新(或上一个)月份呈现之前执行。

有什么想法吗?

【问题讨论】:

  • 这是我对 jQuery 插件开发人员最大的抱怨——我还没有看到他们触发自定义事件的地方,因此像你和我这样的人可以获得一些自定义功能。
  • @Peter jQuery UI 中使用的每个自定义事件都详细记录在 jQuery UI 网站上。
  • @Alex,你没抓住我的意思。插件应该触发自己的事件,以便父脚本可以捕获这些事件并采取行动。 $(this).trigger( 'ui-datepicker:after-month-loaded' ) 之类的东西会让 user278860 做他要求的事情 - 他只需要添加一个 $.bind()
  • @Alex - 。这些不是自定义触发事件。这些是事件回调。我不打算讨论所涉及的差异,以及 cmets 中自定义触发事件所提供的功能。假设我知道 jQuery UI 组件做了什么,我希望他们做了什么。
  • 嗯,我们在这里谈论的是 2 个不同的日期选择器吗?我一直使用的那个来自 jquery.com,你称之为(所有字母小写)“$.datepicker();”但是 vitch 给我们的链接是“$.datePicker();”.. 带有几个未记录的函数(在 jquery.com 上),比如“renderCallback”。

标签: javascript jquery jquery-ui datepicker uidatepicker


【解决方案1】:

您最好的选择可能是beforeShowDay 回调。

http://jqueryui.com/demos/datepicker/#event-beforeShowDay

您可以根据日期条件为单元格指定一个新的类名。

【讨论】:

    【解决方案2】:

    您可以通过我的jQuery datepicker 使用自定义“renderCallback”来执行此操作。

    例如This example 禁用周末并为那些日子添加一个样式类。还有很多其他 complex examples 可能也有帮助...

    $('.date-pick')
        .datePicker(
            {
                renderCallback:function($td, thisDate, month, year)
                {
                    if (thisDate.isWeekend()) {
                        $td.addClass('weekend');
                        $td.addClass('disabled');
                    }
                }
            }
        );
    

    另外,如果您愿意,一旦日历重新渲染,就会有一个dpMonthChanged 事件,您可以循环遍历日历的内容并突出显示...

    【讨论】:

      【解决方案3】:
              hack:
               $('#calendar').datepicker({
                                          onChangeMonthYear: function (year, month, inst) {
                                              setEventsDay()
                                          }
                                       });
      function setEventsDay(){
          var days = $(".ui-state-default");
                         console.log(days.length);   //31 from august to Sep 
              setTimeout(function () {
                          var days = $(".ui-state-default");
                         console.log(days.length);     //30 `enter code here`from august to Sep 
      
                      }, 100)
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-15
        • 2011-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多