【问题标题】:How can I set up rule for selectable FullCalendar如何为可选择的 FullCalendar 设置规则
【发布时间】:2017-11-09 21:45:26
【问题描述】:

我正在尝试为可选属性设置规则。规则应该是这样的: selectable attribute is true for future weeks, otherwise false 但是,我找不到如何在日历选项中检查日期。我尝试了一些方法,但 javascript 不接受这些方法。这是我目前的选择。有什么帮助吗?

$(document).ready(function () {

        $('#calendar').fullCalendar({
        //some options
        //some options

            selectable: true,
            selectHelper: true,

            select: function (start, end) { 
                var title = loadRequired("ff8081815c776701015c7788151d06b4",
                    "activity",
                    "@Session["token"].ToString()");
                var eventData;
                if (title) {
                    eventData = {
                        title: title,
                        start: start,
                        end: end
                    };
                    $('#calendar').fullCalendar('renderEvent', eventData, true); // stick? = true
                }
                $('#calendar').fullCalendar('unselect');
            },
     });

});

【问题讨论】:

  • 有什么问题?在“选择”回调中,检查开始/结束日期。如果它们在您希望允许的日期之前,则不要继续处理代码,只需返回 false。

标签: javascript jquery calendar fullcalendar asp.net-mvc-5


【解决方案1】:

我可能弄错了,但是因为 selectable 只是一个布尔值并且不接受回调,所以我认为没有很好的方法来做到这一点。我可能会将其设置为 true,然后在 select 回调中捕获它。

在选择回调中,您可以检查所选日期是否在未来,是否只是调用unselect 并从函数返回。

【讨论】:

  • 我按照你的建议做了如下
【解决方案2】:

您可以执行以下任何一项/两项操作:

1) 在“选择”回调中,检查开始/结束日期。如果它们在您希望允许的日期之前,则不要继续处理代码,只需返回 false。

2) 您还可以设置 validRange 属性,这样事件甚至不能被拖到您选择排除的区域:https://fullcalendar.io/docs/current_date/validRange/

【讨论】:

  • 这两个选项都会提供相当不错的解决方案,validRange 似乎是一个不错的选项,我不知道。
【解决方案3】:

我检查了选择 atrr 的情况。

select: function (start, end) {
    var check = end.unix()*1000;
    var today = @weekdays[6]*1;


    if(today > check)
    { 
        $('#calendar').fullCalendar('unselect');

    }else
    {
        $('#calendar').fullCalendar('select');
        var title = loadRequired("ff8081815c776701015c7788151d06b4",
            "activity",
            "@Session["token"].ToString()");
        var eventData;
        if (title) {
            eventData = {
                title: title,
                start: start,
                end: end
            };
            $('#calendar').fullCalendar('renderEvent', eventData, true); // stick? = true
        }

    }

},

现在我可以在功能上做我想做的事了。但是,我仍然可以选择日历上的区域,该区域的颜色变为蓝色,然后它进入我的检查点,如果情况为假:取消选择 atrr 已激活。 有没有办法做到这一点?实际上 selectable 属性在该区域过去时不应该为真,而在未来几周应该为真

【讨论】:

  • 这似乎并没有真正回答这个问题,因为你最后仍然在问问题,所以不要将它作为答案发布。如果您对代码进行了更改,请编辑原始问题。如果问题与原始问题有很大不同,请提出一个新问题。此外,如果其他答案已帮助您完成所需的工作,请考虑将其标记为已接受。
猜你喜欢
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-18
  • 2013-11-01
  • 2021-06-26
相关资源
最近更新 更多