Calendar 多功能日历组件

Calendar 可以实现一月、多月和整年日历功能,支持日期单选、周选和范围选择,可通过数据接口显示农历和特殊工作日、休息日,还可以与其他组件进行组合应用。日历组件也适配移动端。

使用

Calendar 组件及其依赖库或组件列表如下:

引用代码示例如下,可放在页面的任何地方,建议放在 HEAD 标签中:

如果需要显示农历和特殊工作日/休息日,还需要把日历数据放到数据库中,实现一个GET接口,核心语句如下:

数据结构为:

特殊工作日和休息日的管理设置参见 Master 管理平台中的“系统” -> “Keeper 监控” -> “工作日历”。

示例

和其他的组件一件,日历组件也通过自定义 HTML 标签实现,一般不需要写 Javascript 代码。唯一可能写代码的地方只有 事件,以下配合示例进行说明:

单月单选模式

```html <calendar id="calendar1"></calendar> ```

注意是 `<calendar></calendar>` 而不是 `<calendar />`,虽然标签之间没有任何东西。

日历中各个部分的文字如星期的文字均可设置,见下面属性说明。

INPUT 单选模式

```html ```

注意`type`属性一定要设置为`calendar`。

各个部分的样式如日期的字体大小均可自行设置,见下面的样式属性说明。

双月周选模式

```html ```

可通过日历属性获取已选中周的各项值,如第几周、开始日期、结束日期等。

INPUT 周选模式

```html ```

    选中的周:   开始日期:   结束日期:

可以通过事件参数或Calendar选择器获取选中的周、开始日期和结束日期。如

双月多选模式

INPUT 多选模式

可以通过 Calendar 的startDateendDate属性获取选中的开始日期和结束日期。如

日期时间选择框

示例略。

整年模式

示例略。

日期时间组合选择器

DateTimePicker 日期时间选择器组件

标签和类

标签属性

标签属性可以在自定义标签 CALEDNAR 上进行设置。

基本设置

初始值

格式属性

样式属性

样式属性一般不需要设置,可直接修改 calendar.css 中对应的样式即可。考虑到可能存在某些极端的情况,Calendar 提供了这些可设置样式的属性。或者要修改样式时可以根据说明去找。

样式属性的名称建议使用中横线连字符分隔的格式,不过去掉连字符也没什么问题。在使用 Javascript 操作这个 Calendar 对象时,可以通过camel格式属性进行调用 ,如focus-day-class对应属性focusDayClass,但是组件没有提供属性设置功能,如calendar.focusDayClass = 'other-class-name'是无效的。

选择器

因为属于自定义标签,不能通过原生的选择器如document.querySelector来操作这个标签。Calendar 对象提供了两种格式的选择器:

类属性

在标签属性中已经介绍了很多属性,这些标签属性除了可以进行预设置外,都可以通过 Calendar 对象进行调用,不过标签属性在 Calenar 对象中大部分都是只读的。另外还有一些不是标签属性的 Calendar 对象属性。

几个重要的属性有:

其他只读的需要在标签中进行设置且只读的属性有:

另有所有的样式属性也都是只读的,不再一一列出。

方法

在 Calendar 对象中,私有方法居多,可用的方法比较少。

事件

事件可以捕获用户对 Calendar 的操作。

另外还有一个事件onchange,当选择的日期改变时触发,目前仅适用于日期单选,和onDaySelectedonDayClick事件一起触发,但是相互独立。区别是onchange可以在属性中使用,其他的事件暂时不可以。

事件使用示例:

在事件函数中,this关键字指向当前 Calendar 对象

CalendarCell 类

CalendarCell 类主要用于操作每个日期项,比如设置角标、设置样式等,这个类的成员主要是属性。上面介绍过,通过 Calendar 对象的getCell(date)方法获取某个日期单元格,然后可以访问或设置这个单元格的各种属性。

通过这个类可以为日历添加更多的功能。


参考链接


微信公众号
码农老吴  |  星源工作室  |  开发月志  |  问题反馈
联系我们:wu@qross.io     手机/微信:18618171102
京 ICP 备 20027445 号
$(h1)!