您好,登錄后才能下訂單哦!
JS日程管理插件FullCalendar提供了豐富的屬性設置和方法調用,開發者可以根據FullCalendar提供的API快速完成一個日歷日程的開發,本文將FullCalendar的常用屬性和方法、回調函數等整理成中文文檔,以供參閱
普通顯示設置
屬性 | 描述 | 默認值 |
header | 設置日歷頭部信息。 如果設置為false,則不顯示頭部信息。包括left,center,right左中右三個位置,每個位置都可以對應以下不同的配置: title: 顯示當前月份/周/日信息 prev: 用于切換到上一月/周/日視圖的按鈕 next: 用于切換到下一月/周/日視圖的按鈕 prevYear:用于切換到上一年視圖的按鈕 nextYear:用于切換到下一年視圖的按鈕 |
{ left: 'title', center: '', right: 'today prev,next' } |
theme | 是否允許使用jquery的ui主題,如果設置為true,則需要加載jQuery ui相關css和js文件。 | false |
buttonIcons | 設置header中使用的prev, next等變量對應按鈕的樣式,只有當theme為true時才有效,如果你調用了jQuery ui樣式但又不想使用它的圖標樣式,可以將此屬性設置為false | { prev: 'circle-triangle-w', next: 'circle-triangle-e' } |
firstDay | 設置一周中顯示的第一天是哪天,周日是0,周一是1,類推。 | 0 |
isRTL | 設置為ture時則日歷從右往左顯示,貌似是針對阿拉伯人設計的。 | false |
weekends | 是否顯示周末,設為false則不顯示周六和周日。 | true |
hiddenDays | 隱藏一周中的某一天或某幾天,數組形式,如隱藏周二和周五:[2,5],默認不隱藏,除非weekends設置為false。 | [] |
weekMode | 在月視圖里顯示周的模式,因為每月周數可能不同,所以月視圖高度不一定。 fixed:固定顯示6周高,日歷高度保持不變 liquid:不固定周數,高度隨周數變化 variable:不固定周數,但高度固定 |
'fixed' |
weekNumbers | 是否在日歷中顯示周次(一年中的第幾周),如果設置為true,則會在月視圖的左側、周視圖和日視圖的左上角顯示周數。 | false |
weekNumberCalculation | 周次的顯示格式。 | "iso" |
height | 設置日歷的高度,包括header日歷頭部,默認未設置,高度根據aspectRatio值自適應。 | |
contentHeight | 設置日歷主體內容的高度,不包括header部分,默認未設置,高度根據aspectRatio值自適應。 | |
aspectRatio | 設置日歷單元格寬度與高度的比例。 | 1.35 |
handleWindowResize | 是否隨瀏覽器窗口大小變化而自動變化。 | true |
windowResize | callback,當瀏覽器窗口變化時觸發function,使用: $('#calendar').fullCalendar({ windowResize: function(view) { alert('The calendar has adjusted to a window resize'); } }); |
|
render | method,綁定日歷到id上。 $('#id').fullCalendar('render'); |
|
destroy | method,銷毀id日歷,把日歷回復到初始化前狀態。 $('#id').fullCalendar('destroy'); |
視圖
FullCalendar提供五種可用視圖,包括month(月視圖),basicWeek(基本周視圖,左側不顯示具體時間),basicDay(基本日視圖,左側不顯示具體時間),agendaWeek(周視圖),agendaDay(日視圖)。
View視圖對象的屬性:
屬性 | 描述 |
name | 包括month,basicWeek,basicDay,agendaWeek,agendaDay |
title | 標題內容(例如"2013年9月" or "Sep 7 - 13 2013") |
start | Date類型, 該view下的第一天 |
end | Date類型, 該view下的最后一天. 由于是一個閉合的值, 所以, 比如在month view下, 10月這個月份, 那么end對應的應該是11月的第一天 |
visStart | Date類型. 在該view下第一個可以訪問的day. month view下, 該值是當月的第一天, week view下, 則通常和start一致 |
visEnd | Date類型, 最后一個可訪問的day |
View其他屬性和方法
屬性 | 描述 | 默認值 |
defaultView | 日歷初始化時默認視圖 | 'month' |
getView | method,取得視圖對象信息,如獲取當前視圖的標題內容: var view = $('#calendar').fullCalendar('getView'); alert("The view's title is " + view.title); |
|
changeView | method,切換視圖 .fullCalendar('changeView',viewName) viewName為5種視圖中的一種 |
日程選項
以下選項設置適用于agendaWeek和agendaDay視圖里。
屬性 | 描述 | 默認值 |
allDaySlot | 在agenda視圖模式下,是否在日歷上方顯示all-day(全天) | true |
allDayText | 定義日歷上方顯示全天信息的文本 | 'all-day' |
axisFormat | 設置日歷agenda視圖下左側的時間顯示格式,默認顯示如:5:30pm | 'h(:mm)tt' |
slotMinutes | 在agenda的視圖中, 兩個時間之間的間隔(分鐘) | 30 |
defaultEventMinutes | 事件默認的時間執行長度,如果事件對象沒有指定執行多長時間,則默認執行兩個小時 | 120 |
firstHour | 當切換到agenda時,初始滾動條滾動到的時間位置,默認在6點鐘的位置 | 6 |
minTime | 設置顯示的時間從幾點開始 | 0 |
maxTime | 設置顯示的時間從幾天結束 | 24 |
slotEventOverlap | 設置視圖中的事件顯示是否可以重疊覆蓋 | true |
當前日期設置
屬性 | 描述 | 默認值 |
year | 設置日歷年份,必須為4位如:2013,如果不設置則默認為當前年份 | |
month | 設置初始化日歷的月份,從0開始,如果年份和月份都未指定,則從一月開始。 | |
date | 設置日歷初始化時的日期,只有在周視圖和日視圖中有效 | |
prev | method,進入到上一月(周、天)視圖 $('#calendar').fullCalendar('prev'); |
|
next | method,進入到下一月(周、天)視圖 $('#calendar').fullCalendar('next'); |
|
prevYear | method,進入上一年視圖 | |
nextYear | method,進入下一年視圖 | |
today | method,進入當天 | |
gotoDate | method,指定進入日歷中的某一天 $('#calendar').fullCalendar( 'gotoDate', year [, month, [ date ]] ) |
|
incrementDate | method, 以當前時間為軸, 將日歷向前, 或向后移動指定長度的時間, 比如: $('#calendar').fullCalendar(‘incrementDate', -3, 2, -5)就表示將日歷年份向前移動3年, 月份向后移動2月, day(天數)向前移動5天。 | |
getDate | method,返回當前日歷中的日期 |
文本與時間定制
你可以根據項目需求設置日歷顯示的文本信息,如中文的月份等。
屬性 | 描述 | 默認值 |
timeFormat | 設置顯示的日程事件的時間格式,如timeFormat: 'H:mm' 則顯示24小時制的像10:30 | {agenda: ‘h:mm{ - h:mm}} |
columnFormat | 設置顯示日歷每列表頭信息的格式文本,默認: { month: 'ddd', // Mon week: 'ddd M/d', // Mon 9/7 day: 'dddd M/d' // Monday 9/7 } |
見描述 |
titleFormat | 設置用于顯示日歷頭部的文本信息,默認: { month: 'MMMM yyyy', // September 2013 week: "MMM d[ yyyy]{ '—'[ MMM] d yyyy}", // Sep 7 - 13 2013 day: 'dddd, MMM d, yyyy' // Tuesday, Sep 8, 2013 } |
見描述 |
buttonText | 設置日歷頭部各按鈕的顯示文本信息,默認: { prev: '‹', // ‹ next: '›', // › prevYear: '«', // « nextYear: '»', // » today: 'today', month: 'month', week: 'week', day: 'day' } |
見描述 |
monthNames | 月份全稱,默認: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] |
見描述 |
monthNamesShort | 月份名稱簡寫,默認:['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun' 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] | 見描述 |
dayNames | 星期全稱,默認:['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] | 見描述 |
dayNamesShort | 星期名稱簡寫,默認:['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] | 見描述 |
weekNumberTitle | 周次,即一年中的第幾周 | "W" |
鼠標單擊和滑過
以下列出的是當鼠標單擊或者滑過日歷中的某個元素時,回調的函數callback。
屬性 | 描述 |
dayClick | 當單擊日歷中的某一天時,觸發callback,用法: $('#calendar').fullCalendar({ dayClick: function(date, allDay, jsEvent, view) { do something... } }); date是點擊的day的時間(如果在agenda view, 還包含時間),在月view下點擊一天時,allDay是true,在agenda模式下,點擊all-day的窄條時,allDay是true,點擊其他的agenda view下的day則為false,jsEvent就是一個普通的javascript事件,包含的是click事件的基礎信息。 |
eventClick | 當點擊日歷中的某一日程(事件)時,觸發此操作,用法: $('#calendar').fullCalendar({ dayClick: function(event, jsEvent, view) { do something... } }); event是日程(事件)對象,jsEvent是個javascript事件,view是當前視圖對象。 |
eventMouseover eventMouseout |
鼠標劃過和離開的事件,用法和參數同上 |
選擇操作
屬性 | 描述 | 默認值 |
selectable | 是否允許用戶通過單擊或拖動選擇日歷中的對象,包括天和時間。 | false |
selectHelper | 當點擊或拖動選擇時間時,顯示默認加載的提示信息,該屬性只在周/天視圖里可用。 | false |
unselectAuto | 當點擊頁面日歷以外的位置時,是否自動取消當前的選中狀態。 | true |
unselectCancel | 指定哪些元素不會清空當前的選中,以JQUERY選擇器的方式指定 '#someId'。 | '' |
select | callback,被選中的函數回調,使用方法: function( startDate, endDate, allDay, jsEvent, view ) startDate:被選中區域的開始時間 endDate:被選中區域的結束時間 allDay:是否為全天事件 startDate:jascript對象 startDate:當前視圖對象 |
|
unselect | callback,選中被取消時的回調,使用方法: function( view, jsEvent ) |
|
select | method,選中某個時間,使用方法: $('#calendar').fullCalendar( 'select', startDate, endDate, allDay ) |
|
unselect | method,取消選中,使用方法: $('#calendar').fullCalendar( 'unselect' ) |
日程事件數據
FullCalendar最重要的部分,設置用于日程事件相關信息。
Event Object,事件對象,用來存儲一個日歷事件信息的標準對象,只有title和start是必須的
屬性 | 描述 |
id | 可選,事件唯一標識,重復的事件具有相同的id |
title | 必須,事件在日歷上顯示的title |
allDay | 可選,true or false,是否是全天事件。 |
start | 必須,事件的開始時間。 |
end | 可選,結束時間。 |
url | 可選,當指定后,事件被點擊將打開對應url。 |
className | 指定事件的樣式。 |
editable | 事件是否可編輯,可編輯是指可以移動, 改變大小等。 |
source | 指向次event的eventsource對象。 |
color | 背景和邊框顏色。 |
backgroundColor | 背景顏色。 |
borderColor | 邊框顏色。 |
textColor | 文本顏色。 |
事件源對象
事件源即日歷中的數據來源,FullCalendar提供了數組、函數調用、以及JSON數據的形式,當然也可以通過Google Calendar feed獲取數據接口。jb51.net后面會有文章專門介紹事件數據的操作,包括數據的查詢、寫入、更新和刪除操作。
以下是Event事件相關的參數屬性說明。
屬性 | 描述 | 默認值 |
eventSources | 事件源,存儲數組對象,可以是Arrays/Functions/URLs。 | |
allDayDefault | 是否為全天日程事件,顯示這一天中所做的事情。 | true |
ignoreTimezone | 是否忽略時區。 | true |
startParam | 在使用URL方式獲取events數據源的時候, 自動插入到URL中的參數, 表示當前需要抓取的日程事件的起始時間。 | 'start' |
endParam | 和startParam參數意義相同, 表示要抓取的日程事件的終止時間。 | 'end' |
lazyFetching | 是否從緩存信息獲取event。比如從月視圖切換到周視圖。 | true |
eventDataTransform | callback,將外部數據源轉換成Fullcalendar可以處理的數據 | |
loading | callback,日歷開始加載的時候,isLoading參數為true觸發一次,日歷加載完畢,isLoading參數為false觸發一次,用法: function(isLoading, view) |
|
updateEvent | method,更新日歷空間中的一個日程事件,如果是重復的日程事件,則都更新。用法: $('#calendar').fullCalendar( 'updateEvent', event ) |
|
clientEvents | method,返回FullCalendar已經存儲到客戶端的CalEvents對象數組, 第二個參數和removeEvents方法的第二個參數意義相同, 只不過在過濾器中, 如果返回true, 則該CalEvent對象將被加入到返回的數組中。 | |
removeEvents | method,從日歷中刪除一個日程事件. 第二個參數可以不填, 可以填id, 可以是一個過濾器(一個函數, 接受CalEvent對象作為參數)。用法: $('#calendar').fullCalendar( 'removeEvents' [, idOrFilter ] ) |
|
refetchEvents | method,重新抓取所有的日程事件源上的日程事件并渲染它們。 | |
addEventSource | method,添加一個日程事件源,添加之后, FullCalendar會馬上從該源獲取日程事件, 并加載到日歷中。第二個參數和定義Calendar時候使用的url參數一致。 | |
removeEventSource | method,移除一個日程事件源,該源上獲取得到的日程時間也將被馬上從日歷中移除。 |
事件渲染
屬性 | 描述 |
eventColor eventBackgroundColor eventBorderColor eventTextColor |
設置日程事件的背景色和邊框色,以及文本顏色。可以使用任意支持css的顏色方式,如 #f00, #ff0000, rgb(255,0,0), or red。 |
eventRender | callback,當日程事件渲染時觸發,用法: function(calEvent, element, view) |
eventAfterRender | callback,當日程事件被渲染后觸發,用法: function( event, element, view ) { } |
eventDestroy | callback,當日程事件移出時觸發,用法: function( event, element, view ) { } |
renderEvent | method,一旦日歷重新取得日程源,則原有日程將消失,當指定stick為true時,日程將永久的保存到日歷上。 |
rerenderEvents | method,重新渲染所有事件。 |
日程事件拖動和縮放
拖動和縮放功能依賴于jQuery ui的draggable和resizable,所以在使用時要提前加載jQuery ui相關插件。
屬性 | 描述 | 默認值 |
editable | 是否可編輯,即進行可拖動和縮放操作。 | false |
eventStartEditable | 是否讓事件在開始時就可以拖動。 | true |
dragRevertDuration | 如果拖拽不成功,多久回復原狀,毫秒 | 500 |
dragOpacity | 拖動時候的不透明度。 { agenda:.5 //對于agenda試圖 '':1.0 //其他視圖 } |
見描述 |
eventDragStart, eventDragStop |
callback,日程事件被拖動之前和之后觸發。這里的拖動不一定是一個有效的拖動,只要日程事件的控件被拖著動了,事件就觸發。 可以從該對象中獲取位移,位置等數據。用法: function( event, jsEvent, ui, view ) { } | |
eventDrop | callback,當拖拽完成并且時間改變時觸發,用法: function( event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view ) { } ayDelta 保存日程向前或者向后移動了多少天 minuteDelta 這個值只有在agenda視圖有效,移動的時間 allDay 如果是月視圖,或者是agenda視圖的全天日程,此值為true,否則為false |
|
eventResizeStart, eventResizeStop |
callback,在一個日程事件改變大小之前之后發生(不一定要改變成功),用法: function( event, jsEvent, ui, view ) { } |
|
eventResize | callback,在日程事件改變大小并成功后調用, 參數和eventDrop參數用法一致。用法: function( event, dayDelta, minuteDelta, revertFunc, jsEvent, ui, view ) { } |
日期工具
函數 | 描述 |
formatDate | 格式化日期,通過指定的格式格式化一個日期,返回一個字符串。options選項是一個對象,其中設置本地化變量支持的屬性值. 比如{ monthNames : ['一月','二月',……],dayNames: ['周日','周一',…..]},用法: $.fullCalendar.formatDate( date,formatString [,options ] ) |
formatDates | 一次格式化兩個日期,和上一個格式化日期類似,只不過,這里在formatString中使用大括號{…}來描述第二個日期的格式化方式。用法: $.fullCalendar.formatDates( date1,date2,formatString [,options ] ) |
parseDate | 解析日期,將一個字符串格式成一個javascript的Date對象,這個string可以是ISO8601,IETF,UNIX時間戳三種格式。用法: $.fullCalendar.parseDate( string ) |
parseISO8601 | 將一個ISO8601字符串轉換成一個javascript 的Date對象。用法: $.fullCalendar.parseISO8601( string [,ignoreTimezone ] ) |
以上是FullCalendar插件的基本屬性與方法,您可以查看文章JS日程管理插件FullCalendar簡單實例進行實際操作
參考文獻:
官方文檔:https://fullcalendar.io/docs/
FullCalendar 官方文檔翻譯:fullCalendar中文API官方文檔
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。