最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Trigger jQuery qTip on Dayclick event of FullCalendar and then create Event using button in it - Stack Overflow

programmeradmin1浏览0评论

CSS applied to create a content in tooltip

.cl_root {
    width: 100%;
    font-size: 13px;
    overflow: hidden;
}
.cl_root .cl_table {
    background-color: #FFF;
    width: 100%;
    margin-bottom: 8px;
    max-width: 100%;
}
.cl_table .cl-key {
    vertical-align: top;
    text-align: left;
    white-space: nowrap;
    font-weight: normal;
    padding: .4em 1em .4em 0;
    font-weight:bold;
}
.cl_table .cl-value{
    width: 95%;
    padding: .4em 0;
    text-align:left;
}
.textbox-fill-input {
    width:95%;
    padding:2px;
    border-width:1px;
    border-color:#666 #ccc #ccc #666

}
.cl-example {
    FONT-SIZE: 12px; PADDING-TOP: 2px;
    font-style:italic
}
.lk {
    WHITE-SPACE: nowrap; COLOR: #112abb; CURSOR: pointer; TEXT-DECORATION: underline;
    float: left;padding-top: 6px;padding-left: 10px;
}

.bubble-table {
    width: 100%; table-layout: fixed;margin-top: 17px;margin-bottom: 4px;
}
.bubble-cell-side {
    WIDTH: 25px;
}
.bubble-mid {
     PADDING-BOTTOM: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; BACKGROUND: #fff;  PADDING-TOP: 0px
}
.cl-button-quickAddBTN{
    float:left;
}
.bubble-closebutton {
    POSITION: absolute; WIDTH: 15px; BACKGROUND: url(css/images/calendar/bined.gif) 0px -50px; HEIGHT: 15px; TOP: 10px; CURSOR: pointer; RIGHT: 10px
}

$.fn.qtip.styles.tipstyle = {
              width:400,
              background: '#FFFFFF',
              color: 'black',
              textAlign: 'center',
              border: {
                  width: 2,
                  radius: 3
              },
              tip: {
                  corner:'bottomMiddle',
                  size:{x:12,y:12}
              },
              name: 'light'
        }

dayclick event on fullcalendar

dayClick: function (date, allDay, jsEvent, view)  { 

                            var d=$.fullCalendar.formatDate(date,"ddd, MMM d");
            $('.qtip').remove();
            if(typeof $(this).data("qtip") !== "object" && allDay) {                            
                            $(this).qtip({
                                  content:{  
                                  text:'<div id="cl_box"><table class="bubble-table" cellspacing="0" cellpadding="0">'+
                                  '<tbody><tr><td class="bubble-cell-side"><div id="tl1" class="bubble-corner">'+
                                  '<div class="bubble-sprite bubble-tl"></div></div></td><td class="bubble-cell-main">'+
                                  '<div class="bubble-top"></div></td><td class="bubble-cell-side">'+
                                  '<div id="tr1" class="bubble-corner"><div class="bubble-sprite bubble-tr"></div></div> </td></tr>'+
                                  '<tr><td class="bubble-mid" colspan="3"><div style="overflow: hidden" id="bubbleContent1">'+
                                  '<div><div></div><div class="cl_root">'+
                                  '<table cellspacing="0" cellpadding="0" class="cl_table">'+
'<tbody><tr><th class="cl-key">Time:</th><td class="cl-value"><div id="bbit-cal-buddle-timeshow">'+d+'</div></td></tr>'+
'<tr><th class="cl-key">What:</th><td class="cl-value"><div class="textbox-fill-wrapper"><div class="textbox-fill-mid">'+
'<input id="bbit-cal-what" class="textbox-fill-input"></div></div><div class="cl-example">e.g., meeting at room 107</div></td>'+
'</tr></tbody></table>'+
'<input id="bbit-cal-quickAddBTN" value="Create event" type="button" class="cl-button-quickAddBTN">'+
'<span id="bbit-cal-editLink" class="lk">Edit details <strong>&gt;&gt;</strong></span>'+
'<input type="hidden" id="box-cl" value="'+date+'">'+
'</div></div></div></td></tr></tbody></table>'+
'<div id="bubbleClose1" class="bubble-closebutton"></div></div>',
                                  },

                                  position: {corner: {tooltip: 'bottomMiddle', target: 'center'}},
                                  style: {
                                         name : 'tipstyle'
                                         },
                                    adjust: {
                                    screen: true // Keep the tooltip within the viewport at all times
                                    },
                                  show: {
                                      solo: true,
                                        when: { event: 'click' },
                                        ready: true 
                                        },
                                  hide: false,                                  

                            });                     



                              }
                      }
<script>
    $("#bbit-cal-quickAddBTN").live('click',function(){
                                                        alert($("#box-cl").attr('value'));
                                    });
    $("#bubbleClose1").live('click',function() {
                                        $(this).parents('qtip').hide();

                                   });
</script>

Now when I click on a day in calendar "qTip ToolTip" appears which includes two buttons Close Button (x) and Create Event Button

When I click on create event it alerts the date of that day and when i click on close button it hides that qTip(initially I was destroying that qTip) But when I again click on the same day qTip not appears again How to handle multiple qTips which triggers on dayClick and disappears either clicking on a close button or clicking on sme other date I also want to create Event using the createEvent button in qTip

CSS applied to create a content in tooltip

.cl_root {
    width: 100%;
    font-size: 13px;
    overflow: hidden;
}
.cl_root .cl_table {
    background-color: #FFF;
    width: 100%;
    margin-bottom: 8px;
    max-width: 100%;
}
.cl_table .cl-key {
    vertical-align: top;
    text-align: left;
    white-space: nowrap;
    font-weight: normal;
    padding: .4em 1em .4em 0;
    font-weight:bold;
}
.cl_table .cl-value{
    width: 95%;
    padding: .4em 0;
    text-align:left;
}
.textbox-fill-input {
    width:95%;
    padding:2px;
    border-width:1px;
    border-color:#666 #ccc #ccc #666

}
.cl-example {
    FONT-SIZE: 12px; PADDING-TOP: 2px;
    font-style:italic
}
.lk {
    WHITE-SPACE: nowrap; COLOR: #112abb; CURSOR: pointer; TEXT-DECORATION: underline;
    float: left;padding-top: 6px;padding-left: 10px;
}

.bubble-table {
    width: 100%; table-layout: fixed;margin-top: 17px;margin-bottom: 4px;
}
.bubble-cell-side {
    WIDTH: 25px;
}
.bubble-mid {
     PADDING-BOTTOM: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; BACKGROUND: #fff;  PADDING-TOP: 0px
}
.cl-button-quickAddBTN{
    float:left;
}
.bubble-closebutton {
    POSITION: absolute; WIDTH: 15px; BACKGROUND: url(css/images/calendar/bined.gif) 0px -50px; HEIGHT: 15px; TOP: 10px; CURSOR: pointer; RIGHT: 10px
}

$.fn.qtip.styles.tipstyle = {
              width:400,
              background: '#FFFFFF',
              color: 'black',
              textAlign: 'center',
              border: {
                  width: 2,
                  radius: 3
              },
              tip: {
                  corner:'bottomMiddle',
                  size:{x:12,y:12}
              },
              name: 'light'
        }

dayclick event on fullcalendar

dayClick: function (date, allDay, jsEvent, view)  { 

                            var d=$.fullCalendar.formatDate(date,"ddd, MMM d");
            $('.qtip').remove();
            if(typeof $(this).data("qtip") !== "object" && allDay) {                            
                            $(this).qtip({
                                  content:{  
                                  text:'<div id="cl_box"><table class="bubble-table" cellspacing="0" cellpadding="0">'+
                                  '<tbody><tr><td class="bubble-cell-side"><div id="tl1" class="bubble-corner">'+
                                  '<div class="bubble-sprite bubble-tl"></div></div></td><td class="bubble-cell-main">'+
                                  '<div class="bubble-top"></div></td><td class="bubble-cell-side">'+
                                  '<div id="tr1" class="bubble-corner"><div class="bubble-sprite bubble-tr"></div></div> </td></tr>'+
                                  '<tr><td class="bubble-mid" colspan="3"><div style="overflow: hidden" id="bubbleContent1">'+
                                  '<div><div></div><div class="cl_root">'+
                                  '<table cellspacing="0" cellpadding="0" class="cl_table">'+
'<tbody><tr><th class="cl-key">Time:</th><td class="cl-value"><div id="bbit-cal-buddle-timeshow">'+d+'</div></td></tr>'+
'<tr><th class="cl-key">What:</th><td class="cl-value"><div class="textbox-fill-wrapper"><div class="textbox-fill-mid">'+
'<input id="bbit-cal-what" class="textbox-fill-input"></div></div><div class="cl-example">e.g., meeting at room 107</div></td>'+
'</tr></tbody></table>'+
'<input id="bbit-cal-quickAddBTN" value="Create event" type="button" class="cl-button-quickAddBTN">'+
'<span id="bbit-cal-editLink" class="lk">Edit details <strong>&gt;&gt;</strong></span>'+
'<input type="hidden" id="box-cl" value="'+date+'">'+
'</div></div></div></td></tr></tbody></table>'+
'<div id="bubbleClose1" class="bubble-closebutton"></div></div>',
                                  },

                                  position: {corner: {tooltip: 'bottomMiddle', target: 'center'}},
                                  style: {
                                         name : 'tipstyle'
                                         },
                                    adjust: {
                                    screen: true // Keep the tooltip within the viewport at all times
                                    },
                                  show: {
                                      solo: true,
                                        when: { event: 'click' },
                                        ready: true 
                                        },
                                  hide: false,                                  

                            });                     



                              }
                      }
<script>
    $("#bbit-cal-quickAddBTN").live('click',function(){
                                                        alert($("#box-cl").attr('value'));
                                    });
    $("#bubbleClose1").live('click',function() {
                                        $(this).parents('qtip').hide();

                                   });
</script>

Now when I click on a day in calendar "qTip ToolTip" appears which includes two buttons Close Button (x) and Create Event Button

When I click on create event it alerts the date of that day and when i click on close button it hides that qTip(initially I was destroying that qTip) But when I again click on the same day qTip not appears again How to handle multiple qTips which triggers on dayClick and disappears either clicking on a close button or clicking on sme other date I also want to create Event using the createEvent button in qTip

Share Improve this question edited May 27, 2012 at 12:09 RichardTowers 4,7621 gold badge28 silver badges43 bronze badges asked May 27, 2012 at 11:50 geek2geek_AWSgeek2geek_AWS 5661 gold badge7 silver badges18 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 1

You need to set the hide property of the qTip constructio from "false" to somthing like the following:

Example:

hide: show: {
             target: $(this).find('#bubbleClose1'),
             when: { event: 'click' },
             ready: true 
             }              
});

I have never worked with qTip, but it seems this should do. It will bind the hide event to the close button inside the children hierarchy of the current instance. Qtip may be using a toggle class or something, to handle the hide/show methods. If this is the case, you may be disrupting the pattern. Even by calling it externally under the binding of "live".

Your option for hide doesn't seem to match the apidoc, have you tried not setting it to hide:false but instead specifying the event that hides it (see the qtip doc), to let qtip do all the showing and hiding?

The following codes should work. and also needs to fix a bug in qtip.js. I use version 1.0.0-rc3, and need to replace line 1003 from for(i = 0; i < interfaces.length - 1; i++) to for(i = 0; i < interfaces.length; i++).


I suggest change to other tooltip library instead of qtip. It's over-designed without good purpose which will cause many GHOST HTML elements. or could try qtip2.

<script type="text/javascript">
        $(function() {
        var self;
        $("#calendar").fullCalendar({
            dayClick: function(date, allDay, jsEvent, view) {
                self = this;
                var d=$.fullCalendar.formatDate(date,"ddd, MMM d");
                if ($(this).data('qtip') == null || $(this).data("qtip").interfaces.length < 1) {
                    $(this).qtip({
                        content: {
                            text: '<div><table class="bubble-table" cellspacing="0" cellpadding="0">'+
                                      '<tbody><tr><td class="bubble-cell-side"><div class="bubble-corner">'+
                                      '<div class="bubble-sprite bubble-tl"></div></div></td><td class="bubble-cell-main">'+
                                      '<div class="bubble-top"></div></td><td class="bubble-cell-side">'+
                                      '<div class="bubble-corner"><div class="bubble-sprite bubble-tr"></div></div> </td></tr>'+
                                      '<tr><td class="bubble-mid" colspan="3"><div style="overflow: hidden" >'+
                                      '<div><div></div><div class="cl_root">'+
                                      '<table cellspacing="0" cellpadding="0" class="cl_table">'+
    '<tbody><tr><th class="cl-key">Time:</th><td class="cl-value"><div >'+d+'</div></td></tr>'+
    '<tr><th class="cl-key">What:</th><td class="cl-value"><div class="textbox-fill-wrapper"><div class="textbox-fill-mid">'+
    '<input class="textbox-fill-input"></div></div><div class="cl-example">e.g., meeting at room 107</div></td>'+
    '</tr></tbody></table>'+
    '<input value="Create event" type="button" class="cl-button-quickAddBTN">'+
    '<span class="lk">Edit details <strong>&gt;&gt;</strong></span>'+
    '<input type="hidden" value="'+date+'">'+
    '</div></div></div></td></tr></tbody></table>'+
    '<div class="bubble-closebutton">X</div></div>'
                        },
                        position: {
                            corner: {
                                tooltip: "bottomMiddle",
                                target: "center"
                            }
                        },
                        adjust: {
                            screen: true
                        },
                        show: {
                            solo: true,
                            when: {event: "click"},
                            ready: true
                        },
                        hide: false
                    });
                }
            }
        });
        $(".cl-button-quickAddBTN").live('click',function(){
                                                    alert($("#box-cl").attr('value'));
                                });
        $(".bubble-closebutton").live('click',function() {
                                            $(self).qtip("Destroy");

                               });
        $.fn.qtip.styles.tipstyle = {
                      width:400,
                      background: '#FFFFFF',
                      color: 'black',
                      textAlign: 'center',
                      border: {
                          width: 2,
                          radius: 3
                      },
                      tip: {
                          corner:'bottomMiddle',
                          size:{x:12,y:12}
                      },
                      name: 'light'
                }
        });
        </script>

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论