如何使用fullcalender检查点击日历事件的条件?

时间:2018-01-10 10:54:27

标签: jquery fullcalendar

我一直在codeigniter中使用fullcalender来在日历上显示事件。点击这些事件后,它会重定向到网址。

但是我想检查一些条件并按照这个改变网址,怎么做呢?

这是我在视野中的代码

<script>
$('#calendar').fullCalendar({
     eventSources: [
         {
             events: function(start, end, timezone, callback) {
                 $.ajax({
                 url: '<?php echo base_url() ?>index.php/faculty_role/Dashboard/get_events',
                 dataType: 'json',
                 data: {

                 },
                 success: function(msg) {
                     var events = msg.events;

                     callback(events);
                 }
                 });
             }
         },
     ]

});
</script>

控制器中的代码

 public function get_events()
 {
     // Our Start and End Dates
     $this->load->library('session');
     $this->load->model("faculty_role/dashboard_model");
     $emp_id=$this->session->userdata['empid'];
     $events = $this->dashboard_model->get_events($emp_id);
     $data_events = array();
        foreach($events->result() as $r) {
       $url='';
       $color='';
       if($r->stats==0){
         $url= base_url().'index.php/faculty_role/Dashboard/view_student/'.$r->schedule_id.'/'.$r->end_time.'/'.$r->date;
         $color='Blue';
       }
       elseif($r->stats==1){
           $url='#';
           $color='Green';
       }
       elseif($r->stats==2){
            $url='#';
           $color='Red';
       }
        $data_events[] = array(
            "title" => $r->schedule_id.'|'.$r->module_name,
            "start" => $r->date.' '.$r->start_time,
            "end" => $r->date.' '.$r->end_time,
            "description"=>$r->fellowship_name.' '.$r->cohort_name,
            "url"=>$url,
            "backgroundColor"=>$color
                );
        }
        echo json_encode(array("events" => $data_events));
        exit();
 }

1 个答案:

答案 0 :(得分:0)

您需要处理“eventClick”回调,按照其名称建议,只要单击日历上的事件,就会运行该回调。你在那里编写代码来决定做什么。在此功能中,您可以选择取消导航到事件的URL并执行其他操作。这是通过从回调函数返回false来完成的。

例如:

eventClick: function(calEvent, jsEvent, view) {
  //check whether the clicked event's start date (normalised to the start of the day for matching purposes) is later than today's date
  if (calEvent.start.startOf("day").isAfter(moment())) {
    return false; //this will prevent navigation to the event's URL
  }
}

有关正常工作的演示,请参阅http://jsfiddle.net/sbxpv25p/99/

这完全记录在fullCalendar网站上:https://fullcalendar.io/docs/mouse/eventClick/