JQuery FullCalendar(二)
前言:根据前文介绍,我们对JQuery FullCalendar如何从后台取数据有了初步了解,已经实现最基本的要求。下面介绍一下FullCalendar的事件
$('#calendar').fullCalendar("getView")的属性
name : month 当前视图类型,月(month),周(agendaWeek),日(agendaDay)
title : 2013年11月 当前视图显示的年月
start : 2013-11-01 00:00:00 当前视图该月份(星期)的第一天
end : 2013-12-01 00:00:00 当前视图该月份(星期)的最后一天+1
visStart : 2013-10-27 00:00:00 当前视图的第一天日期
visEnd : 2013-12-08 00:00:00 当前视图的最后一天日期
$('#calendar').fullCalendar("getDate")
getDate : 2013-11-21 08:06:20 当天日期详细
一、dayClick事件
dayClick,当单击日历中的某一天时,触发callback
date : 2013-11-19 00:00:00 点击的day的时间
allDay : true 是否为全天事件
jsEvent : [object Object]
view : [object Object]
dayClick: function (date, allDay, jsEvent, view) {
if
($(this).hasClass("bg")) {
$(
this
).removeClass("bg");
//设置点击日期的背景颜色
}
else
{
$(
this
).addClass("bg");
}
alert("name :" + $('#calendar').fullCalendar("getView").name);
alert("getDate :" + $.fullCalendar.formatDate($('#calendar').fullCalendar("getDate"), "yyyy-MM-dd HH:mm:ss") );
alert("date :" + $.fullCalendar.formatDate(date, "yyyy-MM-dd HH:mm:ss") ); //点击的day的时间
alert("allDay :" + allDay );
alert("jsEvent :" + jsEvent);
alert("view :" + view);
}
二、eventClick事件
eventClick,当点击日历中的某一日程(事件)时,触发此操作
calEvent.id:返回当前点击对象的id(id值和数据库的一致)
calEvent.title:返回当前点击对象的title(title值和数据库的一致)
eventClick: function (calEvent, jsEvent, view) {
alert('calEvent.id: ' + calEvent.id);
alert('calEvent.title: ' + calEvent.title);
alert('calEvent.start: ' + calEvent.start);
$(this).css('border-color', 'red');
}
三、eventAfterRender
当日程事件被渲染后触发
event: 返回渲染对象的数据
element: 包含渲染对象的HTML内容,可以对其进行重写
view:返回当前视图
通过打印element.html()我们可以观察其内容,也可以用开发者工具查看对应的html代码

可以发现,显示在网页上的内容由两个span标记显示出来的,并且第一个div标记的class含有inner字样,先来看看这个结构

其实这个日程事件(fc-event-inner)就渲染在class名为fc-event-container的div中,并且和element.html()内容是吻合的,
于是猜测修改此处代码可以修改前台页面的显示,替代element.html()里面的元素,并且为日历表单元格添加背景颜色和点击事件
eventAfterRender: function (event, element, view) {
if (view.name == "month") {
var startTime = $.fullCalendar.formatDate(event.start, "yyyy-MM-dd");
var evtcontent = '<div class="fc-event-inner">';
evtcontent = evtcontent + '<span class="fc-event-time">' + startTime + '</span>';
evtcontent = evtcontent + '<span class="fc-event-title">' + event.title + '</span>';
evtcontent = evtcontent + '</div>';
//如果不加入下面的html,页面日程事件可以拖动,无法改变大小
evtcontent = evtcontent + '<div class="ui-resizable-handle ui-resizable-e"> </div>';
element.html(evtcontent);
//通过开发者工具调试页面,发现其单元格含有data-date=2013-11-21这样的标记表示单元格
$("[data-date=" + startTime + "]").addClass("bg");
$("[data-date=" + startTime + "]").click(function () {
location.href = "index.aspx";
});
}
}

到此,不难发现要控制FullCalendar页面样式是件很简单的事情了,因为我们掌握了它的结构,可以用开发者工具详细研究,通过CSS或者其他方式控制样式
四、eventDrop,eventResize
这是一个很酷的事件,拖动日期事件的时间(start,end同时改变相同的timespan),改变日程事件的结束时间(改变end的时间)
前提是editable:true(默认值也是true)
event.id:返回当前日期的ID值,对应数据库的ID
dayDelta:保存日期向前或向后移动了多少天
minuteDelta:这个值只有在agenda视图有效,移动的时间
eventDrop: function (event, dayDelta, minuteDelta,allDay) {
$.post("json.ashx?action=move", { "event": event.id, "dayDelta": dayDelta, "minuteDelta": minuteDelta }, function (data) { });
},
eventResize: function (event, dayDelta, minuteDelta,allDay) {
$.post("json.ashx?action=resize", { "event": event.id, "dayDelta": dayDelta, "minuteDelta": minuteDelta }, function (data) { });
}
在后台,我们简单处理一下递交过来的数据
else if (action == "move")
{
int dayDelta = int.Parse(context.Request["dayDelta"]);
int minuteDelta = int.Parse(context.Request["minuteDelta"]);
int id = int.Parse(context.Request["eventid"]);
AddNewsDataContext db = new AddNewsDataContext();
var res = db.calendar.Single(b => b.Id == id);
res.start = res.start.Value.AddDays(dayDelta);
res.end = res.end.Value.AddDays(dayDelta);
res.start = res.start.Value.AddMinutes (minuteDelta);
res.end = res.end.Value.AddMinutes(minuteDelta);
db.SubmitChanges();
}
else if (action == "resize")
{
int dayDelta = int.Parse(context.Request["dayDelta"]);
int id = int.Parse(context.Request["eventid"]);
int minuteDelta = int.Parse(context.Request["minuteDelta"]);
AddNewsDataContext db = new AddNewsDataContext();
var res = db.calendar.Single(b => b.Id == id);
res.end = res.end.Value.AddDays(dayDelta);
res.end = res.end.Value.AddMinutes(minuteDelta);
db.SubmitChanges();
}
JQuery FullCalendar(二)的更多相关文章
- C# Web Forms - Using jQuery FullCalendar
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> ...
- 微信生成二维码 只需一个网址即刻 还有jquery生成二维码
<div class="orderDetails-info"> <img src="http://qr.topscan.com/api.php?text ...
- jquery 生成二维码
jquery的二维码生成插件qrcode,在页面中调用该插件就能生成对应的二维码 <!DOCTYPE html> <html> <head> <meta ch ...
- MVC5中使用jQuery Post 二维数组和一维数组到Action
很久没有写了,最近在做一个MVC项目,这是我做的第一个MVC项目.之前可以说多MVC一点都不了解,今天把昨天遇到的一个问题记录下来.MVC大神就请飘过吧,跟我遇到同样问题的可以进来看看.遇到的第一个问 ...
- jquery.fullCalendar官方文档翻译(一款小巧好用的日程管理日历, 可集成Google Calendar)
1. 使用方式, 引入相关js, css后, $(‘#div_name’).fullCalendar({//options}); 接受的是一个option对象 2. 普通属性 2.1. year, ...
- JQuery FullCalendar(一)
FullCalendar官网:http://arshaw.com/fullcalendar FullCalendar中文API:http://blog.sina.com.cn/s/blog_9475b ...
- 强大的JQuery(二)--动画效果
上篇博客我们讲过了jquery的基础知识--强大的JQuery(一)--基础篇,作为web开发人员,网页的动画效果是不可缺少的,本篇博客重点来说说jquery的动画效果的实现. 因为动画的效果不能截图 ...
- Jquery 学习二
一.事件编程 1.基本事件(以方法形式存在的) 基本语法: 原生Javascript代码中的事件绑定方式: DOM对象.事件 = 事件的处理程序 jQuery代码中的事件绑定方式: jQuery对 ...
- JQuery的二维码插件
jquery.qrcode.js 只有能重新生成的二维码才是安全的,大牛做了插件,满足我们吃糖的需求: 用法(除了翻译git上的readme我一下子想不到还能写点什么) 引用 <script t ...
随机推荐
- 运行easy_install安装python相关程序时提示failed to create process
运行easy_install安装python相关程序时提示failed to create process,因为安装了两个python,卸载了的那个目录没删除,删除了另外的python目录后这个问题就 ...
- PL/SQL EO 设计与开发
1.INSERT 调用PL/SQL 去insert的时候,没有使用super(),此时应当自己创建callable statement: 调用checkErrors()方法在执行 callable s ...
- CSS3 结构伪类选择器 详解
1 CSS3 结构伪类选择器 1.E:root 匹配E元素所在的根元素 即:html 2. E:nth-child(n) (1)匹配E元素的父元素中第n个子元素,(2)且该位置的子元素类型必须是E类型 ...
- B. Shaass and Bookshelf DP
http://codeforces.com/contest/294/problem/B 据说是贪心,我用了一个复杂度是2e8的dp水过去了. 其实这题就是给你n个数,每个数有两个权值,分成两组,使得第 ...
- TextClock的基本使用
0.介绍 TextClock是在Android 4.2(API 17)后推出的用来替代DigitalClock的一个控件!TextClock可以以字符串格式显示当前的日期和时间,因此推荐在Androi ...
- JavaScript 数组冒泡排序练习
12.29下午主要讲的是简单的一维数组 和数组中利用冒泡排序排列大小 比如有 数字 0.5 20 1 5 4 3 6 利用冒泡排序按照从小到大的顺序排列 var arr=ne ...
- Block回调
•Block的定义 •Block.委托.通知.回调函数,它们虽然名字不一样,但是原理都一样,都是"回调机制"的思想的具体实现 •前面的代理模式的项目改为Block回调实现 ...
- grunt 基本使用使用(一)。
使用grunt 之前,需要做一些基本工作. 1.在E盘 新建空文件夹 grunt. 2.在grunt目录下新建package.json 文件,用了存储 npm模块的依赖项.基本依赖块代码如下: { & ...
- Number Sequence HDU 1711(KMP)
http://acm.hdu.edu.cn/showproblem.php?pid=1711 首次接触KMP,自己都不是特别理解.在网上百度看了好几个帖子之后,对KMP也有了初步的理解. #inclu ...
- Coursera Machine Learning 作业答案脚本 分享在github上
Github地址:https://github.com/edward0130/Coursera-ML