javascript - 是否有支持内置事件详细信息弹出窗口的开源 javascript 日历?

标签 javascript jquery events calendar

在这个谷歌日历中,当你点击一个有事件的日期时,它会弹出事件的详细信息。

http://examples.tripod.com/calendar.html

这就是我需要的(尽管它的大小比我需要的大得多),但在谷歌搜索后,我意识到谷歌日历有很大的局限性。没有简单的方法可以使用 css 自定义其样式,因为在 iframe 中提供了嵌入式谷歌日历。有RESTYLEgc等解决方案,但我真的不想去做。

现在我正在寻找一个支持内置事件详细信息弹出窗口的开源 javascript 日历。它可以是一个非常简单的,只要它允许年/月导航并且它可以突出显示上面有事件的日期,当然还有内置的事件弹出功能。

如果它是基于 jQuery 构建的,那就太好了,因为我已经在网站上包含了 jQuery 库。

我的日历上只有很少的重要事件要设置,我希望我会使用如下代码:

var event1Html='<div class="event-details">Some event details here</div>';
calendar.setEvent('2012-1-25',event1Html);

var event2Html='<div class="event-details">Some other event details here</div>';
calendar.setEvent('2012-1-31',event2Html);

你知道有这样的 javascript 日历吗?

最佳答案

我会查看 fullcalendar脚本。从外观上看,它可以引入谷歌日历,而且还有一个 eventClick 事件,您可以绑定(bind)到该事件并(可能)使用 jQuery-UI 来显示包含更多信息的对话框。

对于演示,请执行以下操作:

  1. 访问那个 fullcalendar 站点并下载最新版本(看起来是 1.5.2)
  2. fullcalendar-1.5.2\fullcalendar-1.5.2\fullcalendar 文件夹提取到您的桌面。
  3. 在您的桌面上创建一个“calendardemo.html”文件并将以下内容粘贴到其中:

<html>
  <head>
    <title>Calendar Demo</title>

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

    <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.0/themes/base/jquery-ui.css" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js"></script>

    <link rel='stylesheet' type='text/css' href='fullcalendar/fullcalendar.css' />
    <link rel='stylesheet' type='text/css' href='fullcalendar/fullcalendar.print.css' media='print' />
    <script type='text/javascript' src='fullcalendar/fullcalendar.min.js'></script>

    <style type="text/css">
      body {
        margin-top: 40px;
        text-align: center;
        font-size: 14px;
        font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
      }

      #calendar {
        width: 640px;
        margin: 0 auto;
      }
    </style>
  </head>



  <body>
    <div id="calendar"></div>
    <div class="ui-helper-hidden" id="calendar-details" title="Event Details">
      <p>Event details</p>
    </div>

    <script type="text/javascript">
      $(function(){
        var date = new Date();
        var d = date.getDate();
        var m = date.getMonth();
        var y = date.getFullYear();

        var $dialog = $('#calendar-details').dialog({
          autoOpen: false,
          model: true,
          height: 300,
          width: 350
        });

        $('#calendar').fullCalendar({
          header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
          },
          editable: true,
          events: [
            {
              title: 'All Day Event',
              start: new Date(y, m, 1)
            },
            {
              title: 'Long Event',
              start: new Date(y, m, d-5),
              end: new Date(y, m, d-2)
            },
            {
              id: 999,
              title: 'Repeating Event',
              start: new Date(y, m, d-3, 16, 0),
              allDay: false
            },
            {
              id: 999,
              title: 'Repeating Event',
              start: new Date(y, m, d+4, 16, 0),
              allDay: false
            },
            {
              title: 'Meeting',
              start: new Date(y, m, d, 10, 30),
              allDay: false
            },
            {
              title: 'Lunch',
              start: new Date(y, m, d, 12, 0),
              end: new Date(y, m, d, 14, 0),
              allDay: false
            },
            {
              title: 'Birthday Party',
              start: new Date(y, m, d+1, 19, 0),
              end: new Date(y, m, d+1, 22, 30),
              allDay: false
            },
            {
              title: 'Click for Google',
              start: new Date(y, m, 28),
              end: new Date(y, m, 29),
              url: 'http://google.com/'
            }
          ],
          eventClick: function(event,jsEvent,view){
            console.log(event);
            $dialog.dialog({title:event.title});
            $('p',$dialog).empty().append(
              $('<p />').text(event.allDay ? 'All day event' : 'Scheduled: ' + event.start + '-' + event.end)
            );
            $dialog.dialog('open');
          }
        });
      });
    </script>
  </body>
</html>

现在点击一个事件。是的,未经修饰,但展示了一种实现目标的非常简单的方法。

关于javascript - 是否有支持内置事件详细信息弹出窗口的开源 javascript 日历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9072802/

相关文章:

javascript - 标签下方的中心单选按钮?

jquery - IE7 在悬停之前不会从导航中移除事件状态

javascript - VS2008 脚本中的 ASP.NET MVC 标记有 "expected expression"警告

java - 设计模式 - 事件或直接引用

javascript - 使用 JS 文件而不是 HTML 事件处理程序重定向?

python - Tkinter 将 <Shift-MouseWheel> 绑定(bind)到水平滚动

javascript - 使用 Jquery 获取与条件匹配的第一个前一个元素

javascript - Firebase Cloud Functions https.onCall 已完成,状态代码为 : 204

jquery - 如何将 Canvas Fabric 更改为静态 Canvas

javascript - 浏览器中的内存泄漏