在项目中要实现日期多选的功能,于是在网上找到Kalendae.js,此文主要记录本人对于Kalendae.js的一些用法,以便以后查阅,希望对读者也有所帮助

主要内容如下:


Kalendae.js一句话介绍

Kalendae.js是一款强大的日期多控件(插件),支持日期的单选、日期的多选日期的范围选择

案例


Kalendae.js如何使用

下载

Github下载|csdn下载)下载Kalendae.js相关的资源,解压后将build目录下的js和css拷贝到项目相应的资源文件夹下面,在需要使用日期多选的页面引入js和css就行了:

<link rel="stylesheet" href="./build/kalendae.css" type="text/css">
<script type='text/javascript' src='./build/kalendae.standalone.js'></script>
<!-- 这里不引入min.js是因为在后面要修改js -->

在页面使用:新建一个demo.html

①直接使用:

<!-- 单选 -->
<div class="auto-kal"></div>
<!-- 多选 -->
<div class="auto-kal" data-kal="mode:'multiple'"></div>

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="./build/kalendae.css" type="text/css">
<script type='text/javascript' src='./build/kalendae.standalone.js'></script>
<title>KalendaeDemo</title>
</head>
<body>
<p>1直接展示(单选)</p>
<div class="auto-kal"></div>
<p>1.1直接展示(多选)</p>
<div class="auto-kal" data-kal="mode:'multiple'"></div>
</body>
</html>

②输入框使用

<!-- 单选 -->
<input type="text" class="auto-kal">
<!-- 多选 -->
<input type="text" class="auto-kal" data-kal="mode:'multiple'">

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="./build/kalendae.css" type="text/css">
<script type='text/javascript' src='./build/kalendae.standalone.js'></script>
<title>KalendaeDemo</title>
</head>
<body>
<p>2输入框使用(单选):</p>
<input type="text" class="auto-kal">
<p>2输入框使用(多选):</p>
<input type="text" class="auto-kal" data-kal="mode:'multiple'" style="width: 100%;">
</body>
</html>

demo.html完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="./build/kalendae.css" type="text/css">
<script type='text/javascript' src='./build/kalendae.standalone.js'></script>
<title>KalendaeDemo</title>
</head>
<body>
<p>1直接展示(单选)</p>
<div class="auto-kal"></div>
<p>1.1直接展示(多选)</p>
<div class="auto-kal" data-kal="mode:'multiple'"></div>
<p>2输入框使用(单选):</p>
<input type="text" class="auto-kal">
<p>2输入框使用(多选):</p>
<input type="text" class="auto-kal" data-kal="mode:'multiple'" style="width: 100%;">
</body>
</html>

显示效果:




Kalendae.js的个性化配置

日期中文显示

默认显示的样式是英文的,用户不友好,可以在kalendae.standalone.js里面进行编辑,设置Locale.prototype

修改月份显示效果:

/*修改_months属性和_monthsShort属性*/
_months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_')
_monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_')

最终是这样子的:

/*_months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),*/
_months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
months : function (m) {
return this._months[m.month()];
},
/*_monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),*/
_monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
monthsShort : function (m) {
return this._monthsShort[m.month()];
},

修改“星期”显示效果:

修改_weekdays 、_weekdaysShort 和_weekdaysMin

最终代码:

//星期显示样式
_weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
weekdays : function (m) {
return this._weekdays[m.day()];
}, _weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
weekdaysShort : function (m) {
return this._weekdaysShort[m.day()];
}, _weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
weekdaysMin : function (m) {
return this._weekdaysMin[m.day()];
},

修改年月显示效果:

修改Kalendae.prototype的titleFormat

titleFormat:'MMMM, YYYY年',

最终效果:

指定的div使用Kalendae

前面都是通过指定class来使用kalendae,可以通过JavaScript代码指定容器使用kalendae。

<div  id="datepk"></div>
<script type="text/javascript">
/*使用方式:
new Kalendae(指定容器,配置);
配置属性注解:
months属性表示日历显示几个月,值:1、2、3.....;默认值:1
mode属性表示显示的是单选还是多选还是范围,值:'single'、'multiple'、'range';默认值:'single'
subscribe属性表示绑定kalendea指定的事件,支持的事件有change、date-clicked、view-changed
*/
new Kalendae(document.getElementById("datepk"), {
months:1,
mode:'multiple',
subscribe: {
'date-clicked': function (date) {
console.log(date._i, this.getSelected());
}
}
});
</script>

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="./build/kalendae.css" type="text/css">
<script type='text/javascript' src='./build/kalendae.standalone.js'></script>
<title>KalendaeDemo</title>
</head>
<body>
<p>3指定div使用(多选):</p>
<div id="datepk" style="width: 100%;"></div>
</body>
<script type="text/javascript">
new Kalendae(document.getElementById("datepk"), {
months:1,
mode:'multiple',
subscribe: {
'date-clicked': function (date) {
console.log(date._i, this.getSelected());
}
}
});
</script>
</html>

修改控件显示的大小

(问题:当页面很小的时候布局会乱……)

修改kalendae.css

设置.kalendae .k-calendar的width为100%;

.kalendae .k-calendar {
display: inline-block;
zoom:1;
*display:inline;
/* width改为100% width:155px;*/
width: 100%;
vertical-align:top;
}

设置.kalendae .k-title,

.kalendae .k-header,

.kalendae .k-days 的width为100%;

.kalendae .k-title,
.kalendae .k-header,
.kalendae .k-days {
/* width改为100% */
/* width:154px; */
width: 100%;
display:block;
overflow:hidden;
}

.kalendae .k-header span 的width为12.8%;

.kalendae .k-header span {
text-align:center;
font-weight:bold;
/* 这里的width要和.kalendae .k-days span 里面的相等 */
width:12.8%;
padding:1px 0;
color:#666;
}

.kalendae .k-days span 的width为12.8%;

.kalendae .k-days span {
/* 水平居中 */
text-align:center;
width:12.8%;
/* 高度 4.5em效果比较好 height等于line-height就能垂直居中了 */
height:4.5em;
line-height:4.5em;
padding:2px 3px 2px 2px;
border:1px solid transparent;
border-radius:3px;
color:#999;
}

.kalendae .k-header span 和.kalendae .k-days span的width要相等

设置文字显示的样式:

.kalendae .k-days span {
/* 水平居中 */
text-align:center;
width:12.8%;
/* 高度 4.5em效果比较好 height等于line-height就能垂直居中了 */
height:4.5em;
line-height:4.5em;
padding:2px 3px 2px 2px;
border:1px solid transparent;
border-radius:3px;
color:#999;
}

最终效果:



个性化配置的css和js demo代码下载

日期多选插件Kalendae.js的更多相关文章

  1. 多选插件multiselect.js

    官方网址:http://loudev.com/ html: <html> <head> <link href="path/to/multiselect.css& ...

  2. 基于JS功能强大的日期插件Kalendae

    开发中需要一个日期插件,可以在zepto下使用,可以选择日期段,可以设置不可选日期 找到一个完全满足的,并且基于JS不依赖于任何库. 在线演示:http://chipersoft.com/Kalend ...

  3. 日期插件rolldate.js的使用

    日期插件rolldate.js的使用 下载地址:http://www.jq22.com/jquery-info19834 效果: 代码: <!DOCTYPE html> <html ...

  4. 24款最好的jQuery日期时间选择器插件

    如果你正在创建一个网络表单,有很多事情你需要在你的应用程序中使用.有时您需要特别的输入,从用户的日期和时间,如发票日期,生日,交货时间,或任何其他此类信息.如果你有这样的需要,可以极大地从动态的jQu ...

  5. multiSelect 下拉多选插件

    multiSelect是一款很好用的下拉多选插件,可以在下拉框中实现多选框,全选及取消全选等方法.使用方法:1.引用 multiSelect.css及 multiSelect.js.下载地址 http ...

  6. jQuery时间格式插件-moment.js的使用

    jQuery时间格式插件-moment.js的使用 moment.js插件的使用,使用之前在页面引入对应的js文件: 详细的操作可见moment中文官网:http://momentjs.cn/ 日期格 ...

  7. js插件---bootstrap-datepicker.js是什么

    js插件---bootstrap-datepicker.js是什么 一.总结 一句话总结:选择时间的插件 时间选择插件 1.datepicker如何默认选择当前天? 直接给datepicker对应的i ...

  8. flatpickr功能强大的日期时间选择器插件

    flatpickr日期时间选择器支持移动手机,提供多种内置的主题效果,并且提供对中文的支持.它的特点还有: 使用SVG作为界面的图标. 兼容jQuery. 支持对各种日期格式的解析. 轻量级,高性能, ...

  9. select 自定义样式插件 selectize.js

    [特别推荐]几款极好的 JavaScript 下拉列表插件   表单元素让人爱恨交加.作为网页最重要的组成部分,表单几乎无处不在,从简单的邮件订阅.登陆注册到复杂的需要多页填写的信息提交功能,表单都让 ...

随机推荐

  1. UOJ #188 Sanrd —— min_25筛

    题目:http://uoj.ac/problem/188 参考博客:https://www.cnblogs.com/cjoieryl/p/10149748.html 关键是枚举最小质因子...所以构造 ...

  2. flask之redis

    redis 连接需要host port passwod Hash:key-fields-value(做缓存)相当于一个key对于一个map,map中还有key-valueList:有顺序可重复(处理不 ...

  3. java代码做repeat次运算,从键盘输入几个数,比最值

    总结:今天这个题目有点灵活,因为它不但要求输出结果,还要进行几次相同的输入,不退出循环 import java.util.Scanner; //从键盘一次输入更多的数,然后把每一次的数进行---可比较 ...

  4. mysql枚举类型与集合类型

    枚举类型与集合类型 字段的值只能在给定范围中选择,如单选框,多选框 enum 单选 只能在给定的范围内选一个值,如性别 sex 男male/女female set 多选 在给定的范围内可以选择一个或一 ...

  5. IO模型比较分析

    异步IO(Asynchronous I/O) Linux下的asynchronous IO其实用得不多,从内核2.6版本才开始引入.先看一下它的流程: 用户进程发起read操作之后,立刻就可以开始去做 ...

  6. String to Integer (atoi) ???

    #define INT_MAX 2147483647 #define INT_MIN -2147483648 class Solution { public: int atoi(const char ...

  7. http://www.jb51.net/list/list_233_2.htm(导航: 首页 >> 软件编程 >> Android)

      日期:2015-04-24理解Android中Activity的方法回调 日期:2015-04-24Android获取手机通讯录.sim卡联系人及调用拨号界面方法 日期:2015-04-24And ...

  8. [原创]Java使用反射及自定义注解实现对象差异性比较

    Java项目C中 有一处逻辑,对于资源数据(类型为ResourceItem,拥有int/double/boolean/String类型数十个字段),需要比对资源数据每次变更的差异,并描述出变更情况.并 ...

  9. Oracle11gR2_ADG管理之恢复主库的truncate表实战

    备库开启flashback database #关闭备库的同步 SQL> alter database recover managed standby database cancel; Data ...

  10. 有关DNS

    单位的域控制器和下面客户端的连接一直有问题,时常会找不到服务器连接: 错误基本显示为:没有可以登录的服务器 无法连接seed.com域 后来发现,是DNS解析的问题,单位使用了外部解析地址202.96 ...