bootstrap-year-calendar是一款非常实用的基于Bootstrap3带记事功能的全年日历插件。该日历插件使用简单,可以动态在某个日期上设置备忘录,可以自定义高亮日期样式和选择最大日期和最小日期范围等。

该Bootstrap全年日历插件目前只支持英文和法文两种语言。

使用方法

使用bootstrap-year-calendar插件需要引入jQuery、Bootstap3的相关依赖文件和插件本身需要的js和css文件。

<link rel="stylesheet" type="text/css" href="bootstrap-3.3.5/css/bootstrap.min.css" />
<link rel="stylesheet" type="text/css" href="css/bootstrap-year-calendar.min.css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="bootstrap-3.3.5/js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/bootstrap-datepicker.min.js"></script>
<script type="text/javascript" src="js/bootstrap-year-calendar.min.js"></script>
<script type="text/javascript" src="js/bootstrap-popover.js"></script>                
              
HTML结构

该Bootstrap3带记事功能的全年日历插件最简单的HTML结构是使用一个空的<div>作为日历的容器。

<div id="calendar"></div>               
              
初始化插件

在页面DOM元素加载完毕之后,可以通过下面的方法来初始化该日历插件。

$('.calendar').calendar()                
              

或者在初始化插件的时候设置一些配置参数:

$('.calendar').calendar(options)               
              

也可以直接在HTML元素上使用data-provide属性来初始化插件。

<div data-provide="calendar"></div>             
              

配置参数

bootstrap-year-calendar全年日历插件的可用配置参数有:

  • allowOverlap:类型:Boolean;默认值:true;指定用户是否可以选择一个在DataSource中于其它元素范围重叠的日期范围。

    Get/Set方法:getAllowOverlap(), setAllowOverlap()

  • contextMenuItems:类型: Array of: { text: String, click: function(dataSourceElement), subMenu: [] };默认值:false;指定上下文菜单的默认项。

    Get/Set方法:getContextMenuItems(), setContextMenuItems()

  • dataSource:类型:Array of: { startDate: Date, endDate: Date, name: String, ... };默认值:[];显示在日历中的日期元素。

    Get/Set方法:getDataSource(), setDataSource()

  • disableDays:类型:Array of Date;默认值:[];不可用的日期。

    Get/Set方法:getDisableDays(), setDisableDays()

  • displayWeekNumber:类型:Boolean;默认值:false;是否显示星期的序号。

    Get/Set方法:getDisplayWeekNumber(), setDisplayWeekNumber()

  • enableContextMenu:类型:Boolean;默认值:false;是否在右键点击一个日期时显示上下文菜单。

    Get/Set方法:getEnableContextMenu(), setEnableContextMenu()

  • enableRangeSelection:类型:Boolean;默认值:false;用户是否可以选择一个日期范围。

    Get/Set方法:getEnableRangeSelection(), setEnableRangeSelection()

  • language:类型:String;默认值:en;当前日历的语言,目前只支持英语和法语。

    Get/Set方法:getLanguage(), setLanguage()

  • maxDate:类型:Date;默认值:null;最大的日期时间,用户不能设置最大日期之后的备忘录。

    Get/Set方法:getMaxDate(), getMaxDate()

  • minDate:类型:Date;默认值:null;最小的日期时间,用户不能设置最小日期之前的备忘录。

    Get/Set方法:getMaxDate(), getMaxDate()

  • startYear:类型:Number;默认值:当期年份;日历打开时显示的年份。

    Get/Set方法:getYear(), setYear()

  • style:类型:String;默认值:'border';指定备忘录日期的样式。

    Get/Set方法:getStyle(), setStyle()

事件

你可以在初始化的时候为一个日历绑定事件:

$('#element').calendar({
    clickDay: function(e) { ... }
});                
              

或者使用jQuery方法来绑定日历事件:

$('#element').clickDay(function(e){ ... });                
              

或者:

$('#element').bind('clickDay', function(e){ ... });                
              
  • clickDay:当某个日期被点击时触发。

    事件参数:

    • element (DOM element):被点击日期的HTML元素。
    • date (Date):被点击日期的日期。
    • which (Number):The number of the button used for clicking (from the original click event)。
    • events (Array of data source element):被点击日期的数据源。
  • dayContextMenu:当一个日期被右键点击的时候触发。

    事件参数:

    • element (DOM element):被点击日期的HTML元素。
    • date (Date):被点击日期的日期。
    • events (Array of data source element):被点击日期的数据源。
  • mouseOnDay:当鼠标进入某个日期时触发。

    事件参数:

    • element (DOM element):被点击日期的HTML元素。
    • date (Date):被点击日期的日期。
    • events (Array of data source element):被点击日期的数据源。
  • mouseOutDay::当鼠标离开某个日期时触发。

    事件参数:

    • element (DOM element):被点击日期的HTML元素。
    • date (Date):被点击日期的日期。
    • events (Array of data source element):被点击日期的数据源。
  • renderDay:当渲染某个日期时触发。

    事件参数:

    • element (DOM element):被点击日期的HTML元素。
    • date (Date):被渲染的日期。
  • renderEnd:当一个日期渲染结束时候触发。

    事件参数:

    • currentYear(Number):日历上显示的年份。
  • selectRange:当一个日期范围被选择的时候触发。

    事件参数:

    • startDate (Date): 日期范围的开始日期。
    • endDate (Date): 日期范围的结束日期。

关于该bootstrap-year-calendar全年日历插件的更多信息可以参考:http://www.bootstrap-year-calendar.com/