简体   繁体   中英

adding a click event to fullcalendar

How can I add a click event on an event and pass the day and event time as a url variable to another page? When a user clicks on an event I want to pass the date and event time to another page for processing.

$('#calendar').fullCalendar({
    eventClick: function(calEvent, jsEvent, view) {
        window.location = "http://www.domain.com?start=" + calEvent.start;

    }
});

Look here for more info: http://arshaw.com/fullcalendar/docs/mouse/eventClick/

callback for clicking date grid:

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

callback for clicking event:

eventClick: function(event) {
...
}

You can try this real world demo: http://www.gbin1.com/technology/jquery/devappwithfullcanlendar/gbin1schedule.htm

Here's how I call the dialog and populate it:

$('#calendar').fullCalendar({ 
    dayClick: function (date, allDay, jsEvent, view) {  
        $("#dialog").dialog('open');
    },   
});

$("#dialog").dialog({
    autoOpen: false,
    height: 350,
    width: 700,
    modal: true,
    buttons: {
        'Create event': function () {
            $(this).dialog('close');
        },
        Cancel: function () {
            $(this).dialog('close');
        }
    },

    close: function () {
    }

}); 

There is a url parameter on the Event object. This will just create an <a> tag. You could build this in the back end yourself to pass whatever arguments you need over the url. @durilai's javascript method would work as well.

I know this is an older post but I was looking for something similar this morning. I feel that my solution was much simpler after looking over some of the other solutions. One thing is that I use font awesome in the anchor tag.

I wanted to display an event on my calendar when the user clicked the event. So I coded a separate tag like so:

<div id="eventContent" class="eventContent" style="display: none; border: 1px solid #005eb8; position: absolute; background: #fcf8e3; width: 30%; opacity: 1.0; padding: 4px; color: #005eb8; z-index: 2000; line-height: 1.1em;">
    <a style="float: right;"><i class="fa fa-times closeEvent" aria-hidden="true"></i></a><br />
    Event: <span id="eventTitle" class="eventTitle"></span><br />
    Start: <span id="startTime" class="startTime"></span><br />
    End: <span id="endTime" class="endTime"></span><br /><br />
</div>

I find it easier to use class names in my jquery since I am using asp.net.

Below is the jquery for my fullcalendar app.

<script>

    $(document).ready(function() {
    
        $('#calendar').fullCalendar({
            googleCalendarApiKey: 'APIKEY',
            header: {
                left: 'prev,next today',
                center: 'title',
                right: 'month,agendaWeek,agendaDay'
            },
            events: {
                googleCalendarId: '@group.calendar.google.com'
            },
            eventClick: function (calEvent, jsEvent, view) {
                var stime = calEvent.start.format('MM/DD/YYYY, h:mm a');
                var etime = calEvent.end.format('MM/DD/YYYY, h:mm a');
                var eTitle = calEvent.title;
                var xpos = jsEvent.pageX;
                var ypos = jsEvent.pageY;
                $("#eventTitle").html(eTitle);
                $("#startTime").html(stime);
                $("#endTime").html(etime);
                $("#eventContent").css('display', 'block');
                $("#eventContent").css('left', '25%');
                $("#eventContent").css('top', '30%');
                return false;
            }
        });
        $("#eventContent").click(function() {
            $("#eventContent").css('display', 'none');
        });
    });

</script>

You must have your own google calendar id and api keys.

I hope this helps when you need a simple popup display

Okay, looks like I answered my own question. Javascript function escape() does the trick.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM