【问题标题】:popup for full calendar in jqueryjquery中完整日历的弹出窗口
【发布时间】:2009-12-22 04:55:58
【问题描述】:

在 jquery 完整日历中创建事件时,我需要显示一个弹出窗口(如 google 日历中的气球弹出窗口)。

弹出窗口的任何最佳插件,显示为气球,也处理点击事件(我用来从弹出窗口创建/编辑/删除事件)?

【问题讨论】:

    标签: jquery popup fullcalendar popup-balloons


    【解决方案1】:

    我已将 QTip 与 fullCalendar 一起使用,效果很好!

    $('#calendar').fullCalendar({
        ...
        eventRender: function(event, element, view)
        {
            element.qtip({ content: "My Event: " + event.title });
        }
       ...
     });
    

    只要确保您在 fullCalendar 的 eventRender 事件中定义了您的 qtip。 :)

    我注意到的唯一问题(使用 JQuery 1.3)是,当 qtip 弹出窗口淡入时,它会在 fullCalendar 的样式网格后面开始淡入。在前〜几帧之后,它很好。此外,这很可能是我在项目中进行的其他一些事情的问题。我懒得进一步调试它,所以你的里程可能会有所不同。 ;p

    【讨论】:

      【解决方案2】:

      qTip 插件可以处理工具提示中的任意内容,包括分配事件处理程序的能力以及获得更丰富功能的能力。

      请参阅demos

      【讨论】:

      • 我能从我点击鼠标的地方显示弹出窗口吗(如在谷歌日历中)?
      【解决方案3】:

      我编写了自己的弹出窗口,它使用具有绝对位置的 div 显示。

      <div id="addEvent" style="display: none; position: absolute; width: 400px; z-index: 1000;">
          <table width="100%" cellpadding="0" cellspacing="0">
              <tr>
                  <td>
                      <div class="PopupContainer">
                          <div class="header">
                              <img src="<%= ResolveUrl("~/Content/images/closepopup.gif") %>" id="addCalEventClose"
                                  title="Close" alt="Close" class="cursorhand" />
                          </div>
                          <div class="clear" />
                          <div class="popup">
      //Your content goes here
      </div>
                      </div>
                      <div class="clear" />
                      <br />
                  </td>
              </tr>
              <tr>
                  <td>
                      <div style="margin-top: -1px">
                          <table width="100%" cellpadding="0" cellspacing="0">
                              <tr>
                                  <td class="taC">
                                      <img src="<%= ResolveUrl("~/Content/images/balloon_arrow.gif") %>" title="" alt=""
                                          id="addEventBalloon" />
                                  </td>
                              </tr>
                          </table>
                      </div>
                  </td>
              </tr>
          </table>
      </div>
      

      用一些javascript调用$('#addEvent').css({ left: xPos, top: yPos }).show().fadeIn();来计算鼠标点击的位置并显示弹出窗口。

      【讨论】:

        【解决方案4】:

        这是我的实现。我在悬停时这样做了,如果你想点击,只需更改事件处理程序

        $('#calendario').fullCalendar({
        
        
        
                                events: "/includes/json-events.php",
        
                                eventDrop: function(event, delta) {
                                    alert(event.title + ' was moved ' + delta + ' days\n' +
                                        '(should probably update your database)');
                                },
        
                                loading: function(bool) {
                                    if (bool) $('#loading').show();
                                    else $('#loading').hide();
                                },
                                eventMouseover: function( event, jsEvent, view ) { 
                                    var item = $(this);
                                    if(item.find('.nube').length == 0){
                                        var info = '<span class="nube"><h2>'+event.title+'</h2><img src="'+event.avatar+'" /> <p class="text">'+event.name+'</p><p>'+event.start+' <br /> '+event.end+'</p><p><a href="/post.php?blogid='+event.id+'">read_more</a></p></span>';
                                        item.append(info);
                                    }
                                    if(parseInt(item.css('top')) <= 200){
                                        item.find('.nube').css({'top': 20,'bottom':'auto'});
                                        item.parent().find('.fc-event').addClass('z0');
                                    }
                                    item.find('.nube').stop(true,true).fadeIn();
                                },
                                eventMouseout: function( event, jsEvent, view ) { 
                                    var item = $(this);
                                    item.find('.nube').stop(true,true).fadeOut();
                                },
                                header: {
                                            left: 'prev,next today',
                                            center: 'title',
                                            right: 'month,agendaWeek,agendaDay'
                                        },
                                        eventRender: function(event, element) {
        
                                        }
        
                            });
        

        而且,至少:

        .nube{ position: absolute;left:0;top:0}
        

        【讨论】:

          【解决方案5】:

          “气球”插件本身不需要处理点击事件,因为 fullcalender 已经为此提供了配置回调...

              $('#calendar').fullCalendar({
                  eventClick: function(calEvent, jsEvent){
                      // ... your code here ...
                  }
              });
          

          如果您正在寻找工具提示样式的“气球”,推荐的 Qtip 是一个不错的选择。您可以根据需要使用 eventClick 函数动态创建工具提示,也许从其他地方获取提示的内容。

          【讨论】:

          • 如何使用工具提示的目标到日历内的鼠标点击位置?
          【解决方案6】:

          试试这个……它是基于 ajax 的,但如果你愿意,你可以删除它。你也可以将你的事件绑定到你想要的控件。

          jquery ajax tooltip

          【讨论】:

            【解决方案7】:

            如果弹出窗口不适合您,请尝试使用旧版本的 jquery。

            我尝试使用 jquery-1.4,它现在可以工作了。我用 jquery-1.2.6 试过了,效果很好。

            a discussion about using older jquery for making qtips work

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-10-25
              • 2016-04-13
              • 1970-01-01
              • 2010-10-06
              • 1970-01-01
              相关资源
              最近更新 更多