`
天梯梦
  • 浏览: 13705210 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

FullCalendar 六:FullCalendar应用——拖动与实时保存

 
阅读更多

我们可以使用FullCalendar建立一个非常强大的日历程序,用户可以轻松的在FullCalendar操作日程安排,诸如新建、修改、删除等操作以及本文将要讲解的拖动、缩放日程事件。

 

HTML

我们将日程页面命名为drag.html,首先是要载入jQuery库,jQuery ui以及fullcalendar插件。

<script src='js/jquery-1.9.1.min.js'></script> 
<script src='js/jquery-ui-1.10.3.custom.min.js'></script> 
<script src='js/fullcalendar.min.js'></script> 

 

然后在body中,建立日历容器div#calendar。

<div id="calendar"></div> 

 

jQuery

FullCalendar提供了可拖动日程事件的方法,但必须依赖jquery ui的draggable插件。当拖动完毕后,eventDrop回调函数中,我们使用post方式向后台php发送ajax请求,请求的参数包括id: 当前拖动事件的id唯一标识,daydiff:拖动前后的天数变更(天数偏移量),minudiff:拖动前后分钟变更(分钟偏移量),allday:是 否为全天事件。然后接收后台php处理的结果,如果返回的不是1(拖动处理失败),就弹出提示信息,并且将日程事件恢复到拖动前的状态,请看代码:

$(function() { 
    events: 'json.php', //事件数据源 
    editable: true, //允许拖动 
    dragOpacity: {//设置拖动时事件的透明度 
        agenda: .5, 
        '':.6 
    }, 
    //拖动事件 
    eventDrop: function(event,dayDelta,minuteDelta,allDay,revertFunc) { 
        $.post("do.php?action=drag",{id:event.id,daydiff:dayDelta, 
        minudiff:minuteDelta,allday:allDay},function(msg){ 
            if(msg!=1){ 
                alert(msg); 
                revertFunc(); //恢复原状 
            } 
        }); 
    } 
}); 

 

PHP

当拖动结束时,FullCalendar向后台do.php发送了ajax请求。和增删改操作一样,do.php接收action动作参数,首先处 理post过来的内容,然后查询数据表中对应的日程事件项,根据是否为全天事件以及是否有结束时间两个条件来构造不同的SQL语句,最后更新数据表,并返 回处理结果,请看代码:

... 
}elseif($action=="drag"){//拖动 
    $id = $_POST['id']; 
    $daydiff = (int)$_POST['daydiff']*24*60*60; 
    $minudiff = (int)$_POST['minudiff']*60; 
    $allday = $_POST['allday']; 
    $query  = mysql_query("select * from `calendar` where id='$id'"); 
    $row = mysql_fetch_array($query); 
     
    if($allday=="true"){//如果是全天事件 
        if($row['endtime']==0){ 
            $sql = "update `calendar` set starttime=starttime+'$daydiff' where id='$id'"; 
        }else{ 
            $sql = "update `calendar` set starttime=starttime+'$daydiff',endtime=endtime 
+'$daydiff' where id='$id'"; 
        } 
         
    }else{ 
        $difftime = $daydiff + $minudiff; 
        if($row['endtime']==0){ 
            $sql = "update `calendar` set starttime=starttime+'$difftime' where id='$id'"; 
        }else{ 
            $sql = "update `calendar` set starttime=starttime+'$difftime',endtime=endtime 
+'$difftime' where id='$id'"; 
        } 
    } 
    $result = mysql_query($sql); 
    if(mysql_affected_rows()==1){ 
        echo '1'; 
    }else{ 
        echo '出错了!';     
    } 
} 

 

以上代码关键在于处理日程事件的开始时间和结束事件,这样,就实现了可以任意拖动日程事件项并实时保存,看下demo,是不是很酷哦。

 

总结

 

关于日程事件的缩放

所谓缩放,其实就是用户可以直接在日历视图中将日程事件拉长和缩短,比如事件为一天的变成两天,10:00结束的会议变成9:30,只需在日历视图 中将对应的日程事件项向右(月视图)或向下(周视图和日视图)拉长或缩短。使用FullCalendar提供的eventResize方法轻松搞定。

eventResize: function(event,dayDelta,minuteDelta,revertFunc) { 
    $.post("do.php?action=resize",{id:event.id,daydiff:dayDelta,minudiff:minuteDelta},function(msg){ 
        if(msg!=1){ 
            alert(msg); 
            revertFunc(); 
        } 
    }); 
} 

 

关于选取多天

FullCalendar提供了select方法,用户可以在新建多天日程的时候,一次性选择连贯的日期,然后弹出的新建日程中会自动补全开始日期和结束日期,这个操作只需按住开始日期,然后拖动鼠标到结束日期,松开左键即可,快去demo中操作下吧。

selectable: true, //允许用户拖动 
select: function( startDate, endDate, allDay, jsEvent, view ){ 
    var start =$.fullCalendar.formatDate(startDate,'yyyy-MM-dd'); 
    var end =$.fullCalendar.formatDate(endDate,'yyyy-MM-dd'); 
    $.fancybox({ 
        'type':'ajax', 
        'href':'event.php?action=add&date='+start+'&end='+end 
    }); 
} 

 

关于多用户共享

要将FullCalendar应用到项目中去,一般是针对多用户使用的,如CRM系统中会有多个用户共享日程,上级可查看下级的日程安排及工作进度,同级用户不能查看对方的日程,这些需求是在项目设计的时候就得定好,当然数据库的设计是至关重要的,这里不再多描述。

 

不足

唯一遗憾的是日历中没有中国农历历法,哪位大神能将中国农历历法移植到FullCalendar中,将会对FullCalendar在中国的应用做出卓越的贡献。

 

结束

FullCalendar系列文章讲述了FullCalendar的基本应用,API文档,读取数据库,新建、修改和删除操作,以及拖动、缩放和选 取,足以满足大型项目应用场景的需求,至此关于FullCalendar的文章本站就此收官,如有FullCalendar相关问题欢迎大家留言讨 论,Helloweba感谢您的关注。

 

来源于helloweba.comFullCalendar应用——拖动与实时保存

分享到:
评论

相关推荐

    FullCalendar应用——增删改数据操作

    **全历应用——数据操作详解** 在Web开发中,日历组件经常被用来展示和管理时间相关的事件。其中,FullCalendar是一款广泛使用的JavaScript库,它提供了丰富的功能,包括创建、编辑和删除日程事件。本篇文章将深入...

    PHP+Mysql+FullCalendar日历拖动与数据保存

    “PHP+Mysql+FullCalendar日历拖动与数据保存”是一个结合了后端编程语言PHP、数据库管理系统MySQL以及前端日历插件FullCalendar的应用实例,旨在实现日程管理功能,允许用户通过拖放操作在日历上安排事件,并将这些...

    fullcalendar-scheduler-master_fullcalendar_

    它与FullCalendar库紧密集成,提供了更高级的日程安排和资源管理功能,是开发人员构建时间表应用的理想选择。在这个详尽的解析中,我们将深入探讨FullCalendar Scheduler的核心特性、使用方法以及如何将其整合到您的...

    yii2-fullcalendar:fullcalendar yii2小部件

    yii2-fullcalendar fullcalendar yii2小部件安装安装此扩展的首选方法是通过 。 无论运行 php composer.phar require --prefer-dist tejrajs/yii2-fullcalendar "dev-master"或添加 "tejrajs/yii2-fullcalendar": ...

    fullcalendar-1.5.1+中文应用方法

    6. **数据源集成**:能够与Google日历、JSON、数据库等多种数据源集成,获取和保存事件信息。 在`fullCalendar具体应用.docx`文档中,可能会详细介绍以下内容: 1. **环境配置**:如何引入FullCalendar所需的...

    yii2-fullcalendar:Yii 2组件,可轻松实现全日历集成

    Yii2全日历组件 安装 安装此扩展的首选方法是通过 。 要安装,请运行 $ php composer.phar require edofre/yii2-fullcalendar "V1.0.11" ...= edofre\fullcalendar\ Fullcalendar :: widget ([ 'options' =&gt;

    fullcalendar教程

    5. 支持drag-and-drop:FullCalendar 支持 drag-and-drop 功能,用户可以通过拖拽操作来添加和编辑日程事件。 FullCalendar 的使用 1. 引入 FullCalendar 库:在 HTML 文件中引入 FullCalendar 库,包括 CSS 和 ...

    fullcalendar支持农历 年历

    5. **数据源集成**:FullCalendar可以与各种数据源集成,如Google Calendar、JSON、数据库等,方便数据的获取和更新。 6. **互动性**:用户可以通过拖放操作调整事件的时间和日期,增强了交互体验。 针对“农历...

    fullCalendar具体应用

    在实际应用中,fullCalendar 可以与 Google 日历连接,以便实现日历事件的同步和导入。为了实现这一点,我们需要在 HTML 代码中添加以下脚本: `&lt;script type='text/javascript' src='js/gcal.js'/&gt;` 然后,在 ...

    fullCalendar实例及Api

    API是开发者与库交互的重要接口,它提供了丰富的配置选项和方法,可以调整日历的外观、行为以及处理用户交互。以下是一些常见的API配置项: 1. **事件数据**:你可以通过`events`配置项指定事件数据来源,可以是URL...

    fullcalendar-2.7.3带中国节日节气

    - **API更新**:FullCalendar的API允许开发者动态添加、修改和删除事件,2.7.3可能对这些接口进行了优化,使得开发者能更方便地操作日历事件。 3. **使用方法**: 使用FullCalendar首先需要在HTML中引入相关的CSS...

    FullCalendar 2.9 排课实例,课节,拖拽

    全历(FullCalendar)是一款非常流行的JavaScript库,用于在网页上创建美观且功能丰富的日历应用。在2.9版本中,它提供了强大的排课功能,使得开发者能够轻松地实现课程展示、拖放操作以及与Bootstrap和Layer等库的...

    FullCalendar的使用demo

    这个"FullCalendar的使用demo"提供了使用FullCalendar的基本示例,帮助开发者快速理解和应用到自己的项目中。以下是对该Demo的详细解读: 1. **全历组件功能**: FullCalendar能够展示日视图、周视图、月视图等...

    FullCalendar日历组件任务增删改完整代码+后端

    **FullCalendar日历组件**是一款强大的JavaScript库,用于在网页上展示日程安排和事件管理。它提供了丰富的自定义选项,使得开发者可以轻松地创建出符合项目需求的日历视图,包括日视图、周视图、月视图以及多日视图...

    jquery的fullcalendar使用案例

    在这个使用案例中,我们将深入探讨jQuery FullCalendar的基本使用、功能特性以及如何在实际项目中应用。 首先,jQuery FullCalendar的核心功能是展示和管理时间轴上的事件。它支持日、周、月视图,允许用户轻松切换...

    fullcalendar-4.4.0官方示例demo.zip

    1. **拖拽功能**:FullCalendar 支持用户通过拖放操作来调整事件的时间和日期,这涉及到事件的动态更新和DOM操作。通过监听`eventDrop`和`eventResize`事件,可以实现事件在日历中的移动和大小调整。 2. **本地化...

    前端日历插件fullcalendar

    **全栈前端开发中的日历插件:FullCalendar** 在Web开发中,日历插件是一种常见的组件,用于展示和管理日期相关的事件。FullCalendar是一款功能强大的JavaScript库,专为前端开发者设计,它能帮助创建交互式的、...

    fullCalendar 增加年视图版

    **压缩包子文件的文件名称列表:fullcalendar-2.2.7-yearview** 这个文件名表明这是一个包含`fullCalendar`2.2.7版本并且集成了年视图功能的资源包。下载并解压后,开发者可以找到所有必要的文件,如JavaScript库、...

    fullcalendar例子

    全历(FullCalendar)是一款广泛应用于网页端的日历组件,专为实现日程管理功能而设计。这款控件以其强大的功能和优秀的用户体验受到开发者们的喜爱。FullCalendar支持多种视图,如日视图、周视图、月视图,甚至可以...

Global site tag (gtag.js) - Google Analytics