【问题标题】:Disable days when change months更改月份时禁用日期
【发布时间】:2015-08-11 13:29:55
【问题描述】:

我正在使用一项功能来禁用除星期一以外的所有日子或启用下一个工作日到星期一的假期。我在显示日历之前运行该函数,它运行良好,但当用户更改日历中的当前月份时,我需要再次运行该函数。

这是日历:

<p:calendar beforeShowDay="disableDays" navigator="true" readonlyInput="true" showOn="button" value="#{bean.date}">
    <f:convertDateTime pattern="yyyy/MM/dd" timeZone="#{timeZone}" />
</p:calendar>

以及功能:

function disableDays(date) {
    var datesToDisable = [ "8-1-2015", "8-2-2015", "8-4-2015", "8-5-2015", "8-6-2015", "8-7-2015", "8-8-2015", "8-9-2015", "8-11-2015", "8-12-2015", "8-13-2015", "8-14-2015", "8-15-2015", "8-16-2015", "8-17-2015", "8-19-2015", "8-20-2015", "8-21-2015", "8-22-2015", "8-23-2015", "8-25-2015", "8-26-2015", "8-27-2015", "8-28-2015", "8-29-2015", "8-30-2015" ];
    var month = date.getMonth(), day = date.getDate(), annio = date.getFullYear();
    for (i = 0; i < datesToDisable.length; i++) {
        if ($.inArray((month + 1) + '-' + day + '-' + annio, datesToDisable) != -1) {
            return [ false ];
        }
    }
    return [ true ];
}

我该怎么做?

【问题讨论】:

  • 将 disableDays javascript 函数放在一个块中,当日历上发生月份更改事件时,您可以通过 ajax 更新该块。然后在 javascript 函数中使用 EL 来禁用新的日子。请参阅stackoverflow.com/questions/2547814/…中的第 1 点
  • 什么是更改月份事件?
  • 对不起,它被称为 viewChange 事件,它可以在 PF 文档中读取
  • 它没有出现在 pdf 文档中,谢谢
  • 对不起,(请原谅)然后不知道如何使用 ctrl-f。它位于 5.2 文档的第 55 页...哇...

标签: primefaces calendar


【解决方案1】:

当问题上的所有 cmets 都将被解释和使用时,此答案是部分伪代码的摘要。它可能包含拼写错误、错误的类,但意图才是最重要的。也许我以后会改进它

xhtml:

<p:calendar...>
    <p:ajax event="viewChange" listener="#{bean.myViewAction}" update="scriptPanel" />
</p:calendar>

<h:panelGroup id="scriptPanel">
    <script>
        function disableDays(date) {
            var datesToDisable = #{bean.disableDates};
            var month = date.getMonth(), day = date.getDate(), annio = date.getFullYear();
            for (i = 0; i < datesToDisable.length; i++) {
                if ($.inArray((month + 1) + '-' + day + '-' + annio, datesToDisable) != -1) {
                    return [ false ];
                }
            }
            return [ true ];
        }
    </script>
</h:panelGroup>

豆:

public void viewChange(DateViewChangeEvent e) { 
    // Get relvant info from event
    // determine new disableDates and set those in the correct formatted string
}

public void getDisableDates() {
    return disableDates;
}

【讨论】:

  • 请根据您的实际情况编辑答案(我会“接受”更改)并创建一个新问题
  • :-D 我的意思是你要改进答案,以便它包含更多真实的代码。但这很好。下一次,你应该更多地基于 cmets 进行实验。这一切都不难
  • 你可以在这里看到新问题:stackoverflow.com/questions/31998536/…如果你能帮助我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多