如果同一日期有超过 3 个使用完整日历的事件,如何更改整个单元格的颜色

2023-11-21

我正在使用完整日历来生成日期并显示事件。 一切工作正常,但我想要一个附加功能,即如果单元格颜色超过 3 个事件,我想将单元格颜色更改为红色。 如果日期有超过 3 个函数/事件,则整个单元格颜色应更改为红色。以便用户知道预订已满。 我还粘贴了下面的屏幕截图

以下是我的代码:-

 function clickmeforcalender(event) {

    debugger


    $('#calendar').show();
    var events = [];
    $.ajax({
        type: "GET",
        url: "/Booking/GetEvents",
        success: function (data) {
            $.each(data, function (i, a) {

                events.push({

                    title: a.Function_Name,
                    start: a.Function_Date1,
                    url: a.Booking_ID,
                    FSlot: a.Function_Slot,
                    MSlot: a.Marquee_Name,
                    Marquee_Slot: a.Marquee_Slot,
                    BPerson: a.Booking_Person,
                    BookedBy: a.Booking_Name,
                });

                $("#calendar").css("background-color", "WHITE");
            })
            var allEvents = $(".calendar").fullCalendar("clientEvents");

            var exists = 0;
            $.each(allEvents, function (index, value) {

                if (new Date(value.start).toDateString() === new Date(date).toDateString()) {
                    exists++;
                    if (exists == 2) {

                        value.css("background-color", "red");
                    }

                }

            });
            GenerateCalender(events);
        },

        error: function (error) {
            alert('failed');
        }
    });
};
function GenerateCalender(events) {
    debugger
    $('#calendar').fullCalendar({
        height: 550,

        header: {
            left: 'prev,next today',
            center: 'addEventButton',
            right: 'month,agendaWeek,agendaDay,listWeek',

        },

        defaultDate: new Date(),
        navLinks: true,
        editable: true,
        eventLimit: true,
        events: events,



        eventClick: function (calEvent, jsEvent, view) {
            selectedEvent = calEvent;
            //alert('Event: ' + calEvent.title);
            jsEvent.preventDefault();
            $('#myModal #eventTitle').text(calEvent.BookedBy + "-" + calEvent.title).css("font-weight", "Bold");
            var $description = $('<div/>');
            $description.append($('<p/>').html('<b>FucntionDate:</b>' + calEvent.start.format("DD-MMM-YYYY HH:mm")));
            //if (calEvent.end != null) {
            //    $description.append($('<p/>').html('<b>End:</b>' + calEvent.end.format("DD-MMM-YYYY HH:mm a")));
            //}
            $description.append($('<p/>').html('<b>EventName:</b>' + calEvent.title));
            if (calEvent.MSlot == 1) {
                $description.append($('<p/>').html('<b>MaqueeSlot:</b>' + "Full"));
            }
            else if (calEvent.MSlot == 2) {
                $description.append($('<p/>').html('<b>MaqueeSlot:</b>' + "Half"));

            }
            else {
                $description.append($('<p/>').html('<b>MaqueeSlot:</b>' + calEvent.MSlot));
            }
            if (calEvent.FSlot == 1) {
                $description.append($('<p/>').html('<b>FunctionSlot:</b>' + "Morning"));
            }
            else if (calEvent.FSlot == 2) {
                $description.append($('<p/>').html('<b>FunctionSlot:</b>' + "Evening"));
            }
            else {
                $description.append($('<p/>').html('<b>FunctionSlot:</b>' + calEvent.FSlot));
            }
            $description.append($('<p/>').html('<b>Booking Persons:</b>' + calEvent.BPerson));

            $('#myModal #pDetails').empty().html($description);

            var temp = $('#myModal').modal();



        },


    });
}

Screenshot of my fronted is as below:- enter image description here


我可以看到您已经做出了一些努力来尝试解决这个问题(根据评论),但您似乎在 JavaScript 中实现建议的算法时遇到了一些问题。

回顾一下,做你想做的事情的基本过程如下:

1)等待日历中所有事件加载完成

2)获取当前可见的所有事件的列表

3)保留一个计数器列表,记录特定日期发生的事件数量。然后检查每个事件的开始日期,并将每个匹配事件的日期计数器加一。

4) 检查完所有事件后,查看每个计数器。如果其中任何一个记录了 3 个以上的事件,则更改日历中当天单元格的背景颜色。

这不是复杂的逻辑,但我可以看到你努力运用你的 JavaScript 知识将其转化为代码。

这是一个简单的解决方案:

eventAfterAllRender: function(view) { //wait till all events have loaded and rendered
  //get all events
  var events = $("#calendar").fullCalendar("clientEvents");
  var dates = {}; //this object will hold the list of dates on which events occur, and the number of events occurring on those dates

  //loop through all the events
  events.forEach(function(ev, index) {
    var startDateStr = ev.start.format("YYYY-MM-DD");
    //either 
    //a) create a new entry for the event's start date and set it to 1, OR
    //b) increase the count of the entry for that date, if it already exists
    // this will build up a list of all dates on which events start, and record how many events start on each of those days
    //it does this by using an empty object, and then adding keys to that object - the key is the date, and the value is the count of events for that date
    dates[startDateStr] = (dates[startDateStr] + 1 || 1);
  });

  //log for debugging / illustration
  console.log(dates);

  //loop through the list of dates which contain events
  for (var dt in dates) {
    //check the count of events for that date. If the count is 3 or more, then change the cell colour for that date in fullCalendar
    if (dates[dt] > 3) {
      $('#calendar').find('.fc-day[data-date="' + dt + '"]').css('background-color', '#FAA732');
    }
  }
}

现场演示:http://jsfiddle.net/9zupvcfo/2/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果同一日期有超过 3 个使用完整日历的事件,如何更改整个单元格的颜色 的相关文章

  • CSS 边框底部的曲线

    我需要 CSS 中的这个图像 并且在这个边框内需要一个背景图像 我努力了 border radius 0 0 50 50 webkit border radius 0 0 50 50 但没有得到所需的形状 任何帮助 将不胜感激 边界半径 您
  • jquery.validate:多个远程规则

    我计划使用两个远程规则验证单个文本字段 更多这样的 form validate rules remote url1 php remote url2 php messages remote Error1 remote Error2 这可能吗
  • a:悬停颜色不起作用

    一件很奇怪的事情 我想在悬停时更改链接的文本颜色和背景颜色 这是代码 css link menu a color white display block height 100 width 100 text decoration none t
  • 如何在 jQuery 中将标题转换为 URL slug?

    我正在 CodeIgniter 中开发一个应用程序 我试图在表单上创建一个字段来动态生成URL slug 我想做的是删除标点符号 将其转换为小写 然后用连字符替换空格 例如 Shane s Rib Shack 将变成 shanes rib
  • 如何设置必须输入特定数字的字段?

    我想知道如何创建一个需要输入特定数字或文本的字段 例如 激活码 以及在输入的确认答案的情况下移动到 网页 并且在未确认的情况下移动到 另一页面 的按钮 使用必需的属性
  • 在 jQuery 中获取 SELECT 的值和文本[重复]

    这个问题在这里已经有答案了 可能的重复 获取选择框中选定选项标签的值 https stackoverflow com questions 7380604 getting the value of the selected option ta
  • 不要包裹 span 元素

    我有一份清单 span 可以在 a 内左右移动的元素 div 元素 如果某些跨度超出了 div 它们应该被隐藏 这可以很好地使用overflow hidden 但是 如果跨度超出了 div 的容纳范围 跨度就会换行 这对于我的用例来说是不期
  • 网格布局:创建 CSS,以便元素在调整相邻元素大小时保持位置

    我想在网格布局中构建一个简单的图像库 并且我正在使用类似的东西悬停时缩放 http www javascript fx com navigation imagezoom general help help html缩放悬停图像 但我宁愿使用
  • 修改 Twitter 帖子上可编辑 Div 的内容

    我正在编写一个 chrome 扩展 它可以帮助用户在 Twitter 上输入内容 当在 twitter 上写推文时 twitter 会打开一个可编辑的 div 容器 当用户输入内容时 twitter 大概正在使用某些网络框架 会生成子 di
  • 哪些 HTML 元素不能包含子节点?

    我一直在寻找一份详尽的清单 但在任何地方都找不到 为了避免必须仔细阅读规范 有谁知道它们是什么 我认为可以包含子元素的补充元素列表也很有用 XHTML 1 和 HTML5 之间的列表有何不同 您可以在以下位置找到 void 元素 不能有任何
  • 如何根据另一个下拉列表中的选择动态填充下拉列表中的选项?

    我有一个表 其中包含类别信息 例如产品 我已将它们列在下拉菜单中 现在 我需要做的是 在下一个下拉菜单中列出所选类别的子类别 我希望 javascript 是必需的 但我对 javascript 还不太熟悉 将非常感谢您的帮助 你应该使用
  • 中有样式表 吗?

    在内部链接 CSS 文件是一个坏主意吗 body 我读过 如果浏览器在外部找到另一个 CSS 文件 则它会被迫重新开始 CSS 渲染 head 只是因为它可能需要将样式应用于已经渲染的元素 另外 我认为 HTML 无法正确验证 我需要确认这
  • CSS 标签“object-fit:cover”不会在 Chrome 中裁剪/剪辑视频

    CSS tag object fit cover无法按预期在 Chrome 中剪辑 裁剪视频 这种情况仅适用于视频且仅在 Chrome 中发生 图像在 Chrome 中正常 在所有其他经过测试的浏览器中 图像和视频都工作正常 The beh
  • jQuery 中什么函数相当于 .SelectMany()?

    让我解释一下 我们知道 jQuery 中的映射函数充当 Select 如 LINQ 中 tr map function return this children first returns 20 tds 现在的问题是我们如何在 jQuery
  • 使 Bootstrap Popover 在悬停而不是单击时出现/消失

    我正在使用 Bootstrap 构建一个网站Popover http twitter github com bootstrap javascript html popovers我不知道如何使弹出窗口出现在悬停而不是单击时 我想做的就是当有人
  • Angularjs : $locationProvider.hashPrefix("!") ;

    我想将网址显示为 www test com 因为我正在使用 locationProvider hashPrefix 但它显示网址为 www test com 我想 哈希之前而不是哈希之后 Thanks var app angular mod
  • 将 JSON 属性绑定到表单

    我有一个 JSON 对象和一个
  • 如何为 jQuery 插件设置私有变量?

    我想创建一个简单的插件 它使用元素的文本作为默认值 或者您可以在调用插件时设置此值 但是 如果我不设置该值 并为多个元素调用插件 则默认值会成倍增加 function fn reText function options var setti
  • 区分 NaN 输入和输入类型为“number”的空输入

    我想使用 type number 的表单输入 并且只允许输入数字
  • HTML 表格 - 固定列宽和多个可变列宽

    我必须建立一个有 5 列的表 表格宽度是可变的 内容宽度的 50 有些列包含固定大小的按钮 因此这些列应该有一个固定大小 例如 100px 有些列中有文本 所以我希望这些列具有可变的列宽 例如 Column1 tablewidth sum

随机推荐

  • 如何将 int 转换为十六进制字符串?

    我想将一个整数 例如 我想通过65然后出去 x41 or 255并得到 xff 我尝试过这样做struct pack c 65 但是上面的任何东西都会窒息9因为它想要接受单个字符串 您正在寻找chr功能 您似乎混合了整数的十进制表示形式和整
  • 如果接收到有效负载大小为 0 的有效 TCP 数据包,recv() 将返回什么值

    在TCP套接字编程中 如果recv 返回0 表示对方关闭了连接 然而 据我所知 TCP RFC 并不强制要求 TCP 的有效负载 gt 0 因此 理论上 TCP 堆栈可以接收有效负载为 0 的消息 所以 本质上我的问题是recv 如果接收到
  • 无法在 Nuget 中将 Ninject 升级到最新版本

    我有一个 ASP NET WebForms 应用程序 它使用一些 Ninject 包 但我卡在某个版本上 当我尝试升级到最新版本时 出现 无法解决依赖项 问题 有问题的包是 Package InstalledVer LatestVer Ni
  • spring - 从类的静态字段中的属性文件中读取属性值

    我有一个实用程序类 其中有一种方法需要用户名和密码才能连接其他网址 我需要将该用户名保留在属性文件中 以便我可以随时更改它 但当我在静态方法 作为实用程序类 中使用它时 问题是它显示 null 即它无法从属性文件中读取 但是当我检查其他控制
  • bash 别名和 awk 引号转义

    我正在尝试为命令创建别名来查看内存使用情况 ps u user o rss command grep v peruser awk sum 1 END print sum 1024 但是 天真的人 bash aliases alias tot
  • boto3 file_upload 检查文件是否存在

    我正在查看 boto3 文档 但找不到它本身是否支持检查文件是否已存在于 s3 中 如果不存在 请不要尝试重新上传 这是我正在做的工作 import boto3 s3 client boto3 client s3 s3 bucket buc
  • Canvas DrawImage() 质量差[重复]

    这个问题在这里已经有答案了 我对 Html5 画布有疑问 i draw an image but its quality becomes very poor 当我用画布绘制它之后 它就变成了这样 我的代码在这里
  • 当对基元和装箱值使用 == 时,是完成自动装箱还是完成拆箱

    以下代码可编译 使用 Java 8 Integer i1 1000 int i2 1000 boolean compared i1 i2 但它有什么作用呢 Unbox i1 boolean compared i1 intvalue i2 o
  • Android套接字连接超时

    我的android应用程序通过socket连接到服务器 这是在node js中编码的 当在前台停留 15 分钟时 它会丢失与服务器的连接 以下是sockt连接服务器的代码 public void connect this connectio
  • 当我尝试从 bash 执行 python 脚本时权限被拒绝? [复制]

    这个问题在这里已经有答案了 我从网上下载了一个 python 脚本 当我尝试从 bash 执行它时 它抛出一个异常 User python script user python script py n some parameter b 输出
  • 如何使用 LibGit2Sharp 获取 Git 上的文件内容?

    我检查了代码BlobFixture cs并发现一些有关读取文件内容的测试 如下所示 using var repo new Repository BareTestRepoPath var blob repo Lookup
  • Handlebars 助手和 Ember Handlebars 助手有什么区别?

    我无法跟上对普通车把和修改后的 Ember 车把助手所做的所有更改 如果我没记错的话你可以用以下方法注册一个助手 Ember Handlebars helper Ember Handlebars registerHelper Ember H
  • Razor 和 HTML 帮助程序

    我正在尝试移植旧的 HTML Image 助手 我确信每个人都曾在某一时刻使用过它 但我遇到了问题 以下编译良好 Html Image my id Content my img png Alt Text 但是当我尝试在视图中使用它时 它只是
  • Java - 在程序中创建新的文件扩展名

    我的目标是为我正在创建的程序创建一个新的文件扩展名 可能不止一个 因此 在四处查看之后 我找到了一些有关该主题的资源 如下所列 以防万一有人想要查看它们并了解我一直在查看的内容 在 Java 应用程序中使用文件关联 创建注册表项以将文件扩展
  • 像表格排序器一样向 添加排序箭头

    我正在尝试向我的表格添加双箭头 向上和向下 例如表格排序器插件可以 这是我的fiddle 由于某种原因 jsfiddle 中甚至没有出现一个箭头 但它可以在我的原始表格上运行 我试过这个 table th addClass headerSo
  • 如何在uWSGI上仅记录5xx错误

    我想让uWSGI只记录服务器错误并避免正常的请求日志 因为文件增长得非常快 并且所有请求日志记录对我来说NGINX都很好 我怎样才能正确配置我的 uwsgi ini 呢 该文档对我来说不是很清楚 最后解决方案非常简单 logto var l
  • 如何在 Ruby 中将数字分组到不同的桶中

    我有一个文件 每行都有数字 0101 1010 1311 0101 1311 431 1010 431 420 我想要一个包含每个数字出现次数的哈希值 在本例中 0101 gt 2 1010 gt 2 1311 gt 2 431 gt 2
  • 自定义视图 - self.frame 不正确?

    所以我有一个自定义的 UIView 类 class MessageBox UIView override init frame CGRect super init frame frame createSubViews required in
  • React-native android WebView在加载之前处理点击的Url

    我正在通过反应本机的 WebView 显示一个网站 此网站上有一个 PassWallet pkpass 文件的链接 不是唯一的用例 当我单击此网站上的任何链接时 我想检查它是否是其他网站或 pkpass 文件或其他文件 当此检查运行时 我不
  • 如果同一日期有超过 3 个使用完整日历的事件,如何更改整个单元格的颜色

    我正在使用完整日历来生成日期并显示事件 一切工作正常 但我想要一个附加功能 即如果单元格颜色超过 3 个事件 我想将单元格颜色更改为红色 如果日期有超过 3 个函数 事件 则整个单元格颜色应更改为红色 以便用户知道预订已满 我还粘贴了下面的