[size=x-large] 这次所做的项目涉及到使用日历插件的问题,在朋友的推荐下使用了fullcalendar这个插件,网上的各种评价fullcalendar都还不错,但是具体的使用就有点迷茫,经过了一个多月的摸索,终于摸清了一些fullcalendar的功能,下面给大家介绍一下,有不对的地方还请多多指教。
我是在网上下的组件shamcey。下载好的
shamcey文件,只需要calendar.html和它的一系列js文件和css文件(所包含的css文件:style.default.css。Js文件:jquery-1.9.1.min.js/jquery-migrate-1.1.1.min.js/jquery-ui-1.9.2.min.js/modernizr.min.js/bootstrap.min.js/fullcalendar.min.js/jquery.cookie.js/custom.js)我使用的是thinkPHP3.1的框架,把这些文件加入到thinkphp3.1的框架中
在calendar.html里面进行的操作,引用的文件
<link rel="stylesheet" href="Css/style.default.css" type="text/css" />
<script type="text/javascript" src="Js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="Js/jquery-migrate-1.1.1.min.js"></script>
<script type="text/javascript" src="Js/jquery-ui-1.9.2.min.js"></script>
<script type="text/javascript" src="Js/modernizr.min.js"></script>
<script type="text/javascript" src="Js/bootstrap.min.js"></script>
<script type="text/javascript" src="Js/fullcalendar.min.js"></script>
<script type="text/javascript" src="Js/jquery.cookie.js"></script>
<script type="text/javascript" src="Js/custom.js"></script>
<script type="text/javascript" src="Js/moment.min.js"></script>
因为fullcalendar是外国人研发的,而老总需要的是中文的日期显示,所以一开始是改日期显示,改变日期显示是修改fullcalendar.min.js里面的
monthNames: ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"],
monthNamesShort: ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"],
dayNames: ["日", "一", "二", "三", "四", "五", "六"],
dayNamesShort: ["日", "一", "二", "三", "四", "五", "六
按照我们的习惯一月-十二月改成)01-12,星期从Mon-Sun改成一-日;
使用Fullcalendar时主要要用的几个操作:select、eventClick、dayClick
Select:
首先是选中某一天的函数select:callback,被选中的函数回调
select: function(start, end, allDay) {
var n1 = start.setSeconds(start.getSeconds()+1);
var myDate1 = new Date(n1);
var today = moment(start).format('YYYY-MM-DD');
var nmounth = moment(start).format('YYYY-MM');//2016-04
jQuery.ajax({
type:"POST",
url:"{Lanrain::U('Zhiban/checkIfHaveZb')}",
data:"nowDate="+today+"&nmonth="+nmounth,
success:function(data){
alert(data);
}
});
jQuery("#month").val(nmounth);
calendar.fullCalendar('unselect');},
Start 必须,事件的开始时间。 End可选,结束时间。 allDay可选,true or false,是否是全天事件。
Start获取到选中日期的时间,这里获取到的时间是Unix时间戳,但是我们一般会转换成我们想要的时间2016-05-17这样的格式,用moment(start).format('YYYY-MM-DD')来转换,这里需要再引入一个moment.js文件,因为之前的fullcalendar不支持这样的转换了;
选中某个日期添加自己的数据,选中的时候弹出一个表单,录入自己要存储的信息。
在点击的时候就把时间赋值给这个文本框(不过还是最好存Unix时间戳,显示的时候是按照Unix时间戳来显示的)表单提交,然后在后台接收数据。
我的三个文本框的东西要生成三条数据,所以采用了数组提交的方式,循环获取添加。
表单数据:
<input type="text" name="watch[]" id="daDui"/>
<input type="text" name="watch[]" id="daDui1"/>
<input type="text" name="watch[]" id="daDui2"/>
Php接收数据并添加,存入数据库:框架的action里面建一个方法接收数据
public function newInfo(){
$zherInfo = $_POST['watch'];
if($zherInfo[0] == ''&& $zherInfo[1] == '' && $zherInfo[2] == ''){
$this->error('请至少填写一个值班人',U('Qyapp/Zhiban/index'));
}else {
$zherInfo = $_POST['watch'];
$zhiTime = $_POST['ZhiTime'];
for ($i = 0; $i < count($zherInfo); $i++) {
$UUID = new UUID();
$addcond['id'] = $UUID->create_uuid("");
$addcond['watch'] = $zherInfo[$i];
$addcond['type'] = $_POST['sType'];
$addcond['duty_time'] = $zhiTime[$i];
$addcond['showTime'] = $_POST['showTime'];
$info = M('wx_oa_schedule')->add($addcond);
}
if ($info) {
$this->redirect("index", array('mid' => $_GET['mid']));
} else {
$this->redirect("index", array('mid' => $_GET['mid']));
}
}}
events: [
{
title: 'All Day Event',
start: new Date(y, m, 1)
},
{
title: 'Meeting',
start: new Date(y, m, d, 10, 30),
allDay: false
},
{
title: 'Lunch',
start: new Date(y, m, d, 12, 0),
end: new Date(y, m, d, 14, 0),
allDay: false
}
]
这是在js里面固定的写数据在日历上显示,采用json格式的数据来显示的,有两个必须的参数就是title和start,title是在日历上面显示的文字内容,start是时间。
在数据库中提取数据在页面显示,就必须把数据转换成json格式,然后再events那里引入方法名。
在action里面建一个方法来查询显示页面上需要的数据。
public function JSONOO(){
$Model = new Model();
$data = $Model->query("SELECT * FROM tp_wx_oa_schedule;");
foreach ($data as $da=>$val) {
$duInfo[] = array(
'id' => $val['id'],
'title' => $val['watch'],//事件标题
'start' => $val['duty_time'],//事件开始时间
);
}
echo json_encode($duInfo);
}
这是在php的方法中查询数据转换成json格式。
在页面上我们就只需要在events那里引入这个方法名
calendar.html的js里面加入
events:"{Lanrain::U('Zhiban/JSONOO')}",
注意:这里的时间显示是Unix时间戳,存的时候要存一个Unix时间戳
当点击日历中的某一日程(事件)时,触发此操作,用法:
eventClick: function(calEvent, jsEvent, view) {
var n1 = calEvent.start.setSeconds(calEvent.start.getSeconds()+1);
var myDate1 = new Date(n1);
var neee = moment(calEvent.start).format('YYYY-MM-DD');
jQuery("#test").val(neww);
jQuery.ajax({
type:"POST",
url:"{Lanrain::U('Zhiban/checkIfLessToday')}",
data:"nowDate="+neee,
success:function(data){
if(data) {
jQuery("#insideShow").html(data);
}
}
});
},
calEvent是日程(事件)对象,jsEvent是个javascript事件,view是当前视图对象。
我这里是点击的时候获取到calEvent.start事件开始的时间,根据时间从数据库查询存入的数据。
注:我这里都用的是jQuery的ajax传值获取值。
当单击日历中的某一天时,触发callback,用法:
dayClick: function(date, allDay, jsEvent, view) {
var nmounth = moment(date).format('YYYY-MM');
var today = moment(date).format('MM-DD');
jQuery("#nmonth").val(nmounth);
var str = date.toString();
var neww = str.substr(0,10);
jQuery.ajax({
type:"POST",
url:"{Lanrain::U('Zhiban/showInfo')}",
data:"sToday="+neww+"&today="+today,
success:function(data){
jQuery("#hidInfo").show();
jQuery("#hidInfo").html(data);
}
});
calendar.fullCalendar('unselect');
$(this).css('backgroundColor', 'pink');
},
date是点击的day的时间(如果在agenda view, 还包含时间),在月view下点击一天时,allDay是true,在agenda模式下,点击all-day的窄条时,allDay是true,点击其 他的agenda view下的day则为false,jsEvent就是一个普通的javascript事件,包含的是click事件的基础信息。
$(this).css('backgroundColor', 'pink');
这里是点击某一个日期时背景颜色变化。
我所运用的fullcalendar就这么多了,刚开始接触到他的时候我真的是抓狂的,到处问人查文档,慢慢的自己摸出了这些功能。他的功能可不止这么简单,大家有需要的就多多去探索吧。[/size]
分享到:
相关推荐
《深入理解ThinkPHP5.0.5:框架详解与实战应用》 ThinkPHP5.0.5是一款基于PHP7设计的轻量级、高性能的国产Web开发框架,它以其简洁的代码、高效的性能以及强大的功能在PHP开发领域备受青睐。本篇文章将详细解析...
《深入浅出ThinkPHP 5.0.2框架:实例...总结,"thinkphp_5.0.2_full"压缩包是学习和实践ThinkPHP 5.0.2框架的理想资源,通过深入研究其核心文件和目录结构,可以掌握框架的使用方法和设计理念,进一步提升PHP开发能力。
ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,... 使用ThinkPHP,你可以更方便和快捷的开发和部署应用。当然不仅仅是企业级应用,任何PHP应用开发都可以从ThinkPHP的简单 和快速的特性中受益。
在使用过程中,可以根据标签“ThinkPHP Full”和“完整版”理解,这个压缩包包含了ThinkPHP框架的所有组成部分,可以直接用于开发或学习。不过,为了享受更多的功能和安全更新,建议开发者考虑升级到更高版本的...
《深入解析ThinkPHP 3.2.3框架》 ThinkPHP 3.2.3是基于PHP语言的一个轻量级的、快速的、强大的开发框架,它...在实际开发过程中,深入理解和熟练掌握ThinkPHP的这些关键点,将有助于提升开发者的专业技能和项目质量。
在实际开发中,我们可以通过以下步骤进行ThinkPHP 3.0 的应用开发: 1. 创建项目结构,根据需求划分模块。 2. 编写配置文件,设置数据库连接、模板路径等。 3. 设计数据库模型,编写Model类,实现数据操作。 4. ...
在实际使用中,开发者可以通过实例化这个类并调用其方法,轻松地在ThinkPHP应用中集成中文分词功能。常见的分词算法有HMM( Hidden Markov Model)、BMES(Begin-Middle-End-Single)等,此文件中可能采用了其中的一...
对于Thinkphp2.2初学者,"ThinkPHP_2.2_Full_0323"文件包含了完整的框架源码,便于深入理解其内部工作原理。"说明.htm"则可能提供了详细的框架介绍和使用指南,包括安装步骤、基本架构、常用功能等,是学习的良好...
本文将详细解析ThinkPHP 3.2.3的核心特性、主要功能以及使用技巧。 一、核心特性 1. 快速开发:ThinkPHP 3.2.3采用MVC(Model-View-Controller)架构模式,使开发者可以专注于业务逻辑,提高开发速度。其内置的...
ThinkPHP中FCKeditor编辑器的使用 前段时间一直为TP寻找好用的在线编辑器而苦恼,经过多次尝试与修改后,终于成功地将编辑器集成到Thinkphp里面。 而且可以用直接上传和ajax两种方式处理内容。为了给一些还没能成功...
在Thinkphp中使用MongoDB进行多条件查询时,需要对框架提供的驱动进行一定的修改以适应MongoDB的查询方式。 在Thinkphp中实现多条件查询时,可以使用框架提供的查询构建器(Query Builder),但是当涉及到MongoDB的...
在`thinkphp_3.2.3_full`中,我们可以看到典型的MVC(Model-View-Controller)架构。MVC模式将应用程序分为三个主要部分:模型(Model)负责处理数据和业务逻辑,视图(View)用于展示数据,控制器(Controller)则...
Thinkphp 使用Dompdf
本文将深入探讨在ThinkPHP6框架中如何使用Workerman库来实现WebSocket连接,以及相关的技术要点。 首先,`ThinkPHP6` 是一个基于 PHP7 开发的轻量级且强大的国产PHP框架,其核心设计理念是“简洁、实用、快速”。它...
"ThinkPHP中文转拼音字母简单调用"这个主题,正是关于如何在ThinkPHP中轻松实现这一功能。 首先,我们要理解的是,中文转拼音主要是通过特定的算法和库来完成的,这些库能够将汉字映射到对应的汉语拼音。在这个案例...
在ThinkPHP2.0中,核心概念和关键组件包括: 1. **MVC模式**:模型(Model)负责处理数据和业务逻辑,视图(View)负责呈现用户界面,控制器(Controller)协调模型和视图,实现数据和界面的交互。这种分离提高了...
【标题】"中小型企业使用ThinkPHP搭建"涉及的是在中小型企业的信息化建设中,采用ThinkPHP这一流行的PHP开发框架来构建企业系统的过程。ThinkPHP作为国内广泛使用的开源框架,以其高效、简洁、易学的特点,成为了...
ThinkPHP3.1.3版本相对于上一版本更加安全和易用,是一个建议升级的版本。 更新 该版本针对3.1.2进行了一些改进和完善,主要包括: 改进异常处理,支持致命错误捕获; 针对PDO驱动和Sqlsrv驱动的完善,支持参数...
### ThinkPHP多语言的使用和配置 #### 概述 ThinkPHP是一款广泛应用于Web开发的高性能PHP框架,它集成了很多实用的功能与特性,其中包括强大的多语言支持功能。多语言支持对于面向全球用户的应用尤其重要,它使得...