1.layui之laydate组件是什么

layui是一个编程大神贤心所作的前端框架。laydate是layui的日期组件。

2.layui组件的运用

1)基础参数选项

通过核心方法laydate.render(options)来设置参数,也可以通过方法laydate.set(options)来设定全局基础参数。

2)绑定元素

类型:String,默认:无。

对必填项进行绑定,值一般为选择器,或DOM对象。

laydate.render({ elem: '#test' //或 elem: document.getElementById('test')、elem: lay('#test') 等
});

3)控件选择

类型:String,默认date。

用于单独提供不同的选择器类型,可选值如下表:

type可选值 名称 用途
year 年选择器 只提供年列表选择
month 年月选择器 只提供年、月选择
date 日期选择器 可选择:年、月、日。type默认值,一般可不填
time 时间选择器 只提供时、分、秒选择
datetime 日期时间选择器 可选择:年、月、日、时、分、秒

样例如下:

//年选择器
laydate.render({ elem: '#test',type: 'year'
});//年月选择器
laydate.render({ elem: '#test',type: 'month'
});//日期选择器
laydate.render({ elem: '#test'//,type: 'date' //默认,可不填
});//时间选择器
laydate.render({ elem: '#test',type: 'time'
});//日期时间选择器
laydate.render({ elem: '#test',type: 'datetime'
});

4)range:范围选择器

类型:Boolean/String,默认值:false

如果设置为true,将默认采用“-”分割;也可以直接设置分割字符5种选择器类型均支持左右面板的范围选择。

//年范围选择
laydate.render({ elem: '#test',type: 'year',range: true //或 range: '~' 来自定义分割字符
});//年月范围选择
laydate.render({ elem: '#test',type: 'month',range: true //或 range: '~' 来自定义分割字符
});//日期范围选择
laydate.render({ elem: '#test',range: true //或 range: '~' 来自定义分割字符
});//时间范围选择
laydate.render({ elem: '#test',type: 'time',range: true //或 range: '~' 来自定义分割字符
});//日期时间范围选择
laydate.render({ elem: '#test',type: 'datetime',range: true //或 range: '~' 来自定义分割字符
});

5)format - 自定义格式

类型:String,默认值:yyyy-MM-dd

通过日期时间各自的格式符和长度,来设定一个你所需要的日期格式。layDate 支持的格式如下:

格式符 说明
yyyy 年份,至少四位数。如果不足四位,则前面补零
y 年份,不限制位数,即不管年份多少位,前面均不补零
MM 月份,至少两位数。如果不足两位,则前面补零。
M 月份,允许一位数。
dd 日期,至少两位数。如果不足两位,则前面补零。
d 日期,允许一位数。
HH 小时,至少两位数。如果不足两位,则前面补零。
H 小时,允许一位数。
mm 分钟,至少两位数。如果不足两位,则前面补零。
m 分钟,允许一位数。
ss 秒数,至少两位数。如果不足两位,则前面补零。
s 秒数,允许一位数。

通过上述不同的格式符组合成一段日期时间字符串,可任意排版,如下所示:

格式 示例值
yyyy-MM-dd HH:mm:ss 2017-08-18 20:08:08
yyyy年MM月dd日 HH时mm分ss秒 2017年08月18日 20时08分08秒
yyyyMMdd 20170818
dd/MM/yyyy 18/08/2017
yyyy年M月 2017年8月
M月d日 8月18日
北京时间:HH点mm分 北京时间:20点08分
yyyy年的M月某天晚上,大概H点 2017年的8月某天晚上,大概20点
//自定义日期格式
laydate.render({
elem: '#test'
,format: 'yyyy年MM月dd日' //可任意组合
});

6)value - 初始值

类型:String,默认值:new Date()

支持传入符合format参数设定的日期格式字符,或者 new Date()

//传入符合format格式的字符给初始值
laydate.render({
elem: '#test'
,value: '2018-08-18' //必须遵循format参数设定的格式
});//传入Date对象给初始值
laydate.render({
elem: '#test'
,value: new Date(1534766888000) //参数即为:2018-08-20 20:08:08 的时间戳
});

7)isInitValue - 初始值填充

类型:Boolean,默认值:true

用于控制是否自动向元素填充初始值(需配合 value 参数使用)

laydate.render({
elem: '#test'
,value: '2017-09-10'
,isInitValue: false //是否允许填充初始值,默认为 true
});

注意:该参数为 layui 2.3.0 新增。

8)min/max - 最小/大范围内的日期时间值

类型:string,默认值:min: '1900-1-1'max: '2099-12-31'

设定有限范围内的日期或时间值,不在范围内的将不可选中。这两个参数的赋值非常灵活,主要有以下几种情况:

1. 如果值为字符类型,则:年月日必须用 -(中划线)分割时分秒必须用 :(半角冒号)号分割。这里并非遵循 format 设定的格式
2. 如果值为整数类型,且数字<86400000,则数字代表天数,如:min: -7,即代表最小日期在7天前,正数代表若干天后
3. 如果值为整数类型,且数字 ≥ 86400000,则数字代表时间戳,如:max: 4073558400000,即代表最大日期在:公元3000年1月1日
 
//日期有效范围只限定在:2017年
laydate.render({
elem: '#test'
,min: '2017-1-1'
,max: '2017-12-31'
});//日期有效范围限定在:过去一周到未来一周
laydate.render({
elem: '#test'
,min: -7 //7天前
,max: 7 //7天后
});//日期时间有效范围的设定:
laydate.render({
elem: '#test'
,type: 'datetime'
,min: '2017-8-11 12:30:00'
,max: '2017-8-18 12:30:00'
});//时间有效范围设定在: 上午九点半到下午五点半
laydate.render({
elem: '#test'
,type: 'time'
,min: '09:30:00'
,max: '17:30:00'
});

毫不保留地说,min和max参数是两个非常强大的存在,合理运用,可帮助用户在日期与时间的选择上带来更为友好的约束与体验。

8)min/max - 最小/大范围内的日期时间值

类型:String,默认值:focus,如果绑定的元素非输入框,则默认事件为:click

//自定义事件
laydate.render({
elem: '#test'
,trigger: 'click' //采用click弹出
});

9)show - 默认显示

类型:Boolean,默认值:false

如果设置: true,则控件默认显示在绑定元素的区域。通常用于外部事件调用控件,如:

//默认显示
laydate.render({
elem: '#test'
,show: true //直接显示
});//外部事件调用
lay('#test1').on('click', function(e){ //假设 test1 是一个按钮
laydate.render({
elem: '#test'
,show: true //直接显示
,closeStop: '#test1' //这里代表的意思是:点击 test1 所在元素阻止关闭事件冒泡。如果不设定,则无法弹出控件
});
});
  1. 10)position - 定位方式

类型:String,默认值:absolute

用于设定控件的定位方式,有以下三种可选值:

position 可选值 说明
abolute 绝对定位,始终吸附在绑定元素周围。默认值
fixed 固定定位,初始吸附在绑定元素周围,不随浏览器滚动条所左右。一般用于在固定定位的弹层中使用。
static 静态定位,控件将直接嵌套在指定容器中。
注意:请勿与 show 参数的概念搞混淆。show为 true 时,控件仍然是采用绝对或固定定位。而这里是直接嵌套显示

下面是一个直接嵌套显示的例子:

2020年12月

 
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9

重置现在确定

11)zIndex - 层叠顺序

类型:Number,默认值:66666666

一般用于解决与其它元素的互相被遮掩的问题。如果 position 参数设为 static 时,该参数无效。

//设定控件的层叠顺序
laydate.render({
elem: '#test'
,zIndex: 99999999
});

12)showBottom - 是否显示底部栏

类型:Boolean,默认值:true

如果设置 false,将不会显示控件的底部栏区域

样例如下:
//不显示底部栏
laydate.render({
elem: '#test'
,showBottom: false
});

13)btns - 工具按钮

类型:Array,默认值:['clear', 'now', 'confirm']

右下角显示的按钮,会按照数组顺序排列,内置可识别的值有:clear、now、confirm

代码如下:

//只显示清空和确认
laydate.render({
elem: '#test'
,btns: ['clear', 'confirm']
});

14)lang - 语言

类型:String,默认值:cn

我们内置了两种语言版本:cn(中文版)、en(国际版,即英文版)。这里并没有开放自定义文字,是为了避免繁琐的配置。

代码如下:
//国际版
laydate.render({
elem: '#test'
,lang: 'en'
});

15)theme - 主题

类型:String,默认值:default

我们内置了多种主题,theme的可选值有:default(默认简约)、molv(墨绿背景)、#颜色值(自定义颜色背景)、grid(格子主题)

样例如下:
//墨绿背景主题
laydate.render({
elem: '#test'
,theme: 'molv'
});//自定义背景色主题 - 非常实用
laydate.render({
elem: '#test'
,theme: '#393D49'
});//格子主题
laydate.render({
elem: '#test'
,theme: 'grid'
});

另外,你还可以传入其它字符,如:theme: 'xxx',那么控件将会多出一个 class="laydate-theme-xxx" 的CSS类,以便于你单独定制主题。

16)calendar - 是否显示公历节日

类型:Boolean,默认值:false

我们内置了一些我国通用的公历重要节日,通过设置 true 来开启。国际版不会显示。

代码如下:
//允许显示公历节日
laydate.render({
elem: '#test'
,calendar: true
});

17)mark - 标注重要日子

类型:Object,默认值:

calendar 参数所代表的公历节日更多情况下是一个摆设。因此,我们还需要自定义标注重要日子,比如结婚纪念日?日程等?它分为以下两种:

标注 格式 说明
每年的日期 {'0-9-18': '国耻'} 0 即代表每一年
每月的日期 {'0-0-15': '中旬'} 0-0 即代表每年每月(layui 2.1.1/layDate 5.0.4 新增)
特定的日期 {'2017-8-21': '发布') -

可同时设定多个,如:

//标注重要日子
var ins1 = laydate.render({
elem: '#test'
,mark: {
'0-10-14': '生日'
,'0-12-31': '跨年' //每年12月31日
,'0-0-10': '工资' //每个月10号
,'2017-8-15': '' //具体日期
,'2017-8-20': '预发' //如果为空字符,则默认显示数字+徽章
,'2017-8-21': '发布'
}
,done: function(value, date){
if(date.year === 2017 && date.month === 8 && date.date === 15){ //点击2017年8月15日,弹出提示语
ins1.hint('中国人民抗日战争胜利72周年');
}
}
});

非常实用的存在,是时候利用它制作你的日程表了。

18)控件初始打开的回调

控件在打开时触发,回调返回一个参数:初始的日期时间对象

代码如下:
laydate.render({
elem: '#test'
,ready: function(date){
console.log(date); //得到初始的日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
}
});

19)日期时间被切换后的回调

年月日时间被切换时都会触发。回调返回三个参数,分别代表:生成的值日期时间对象结束的日期时间对象

代码如下:

laydate.render({
elem: '#test'
,change: function(value, date, endDate){
console.log(value); //得到日期生成的值,如:2017-08-18
console.log(date); //得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
console.log(endDate); //得结束的日期时间对象,开启范围选择(range: true)才会返回。对象成员同上。
}
});

20)控件选择完毕后的回调

点击日期、清空、现在、确定均会触发。回调返回三个参数,分别代表:生成的值日期时间对象结束的日期时间对象

代码样例如下:
laydate.render({
elem: '#test'
,done: function(value, date, endDate){
console.log(value); //得到日期生成的值,如:2017-08-18
console.log(date); //得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
console.log(endDate); //得结束的日期时间对象,开启范围选择(range: true)才会返回。对象成员同上。
}
});

21)弹出控件提示

事实上,执行核心方法 laydate.render(options) 会返回一个当前实例对象。其中包含一些成员属性和方法,比如:hint方法

样例如下:

var ins1 = laydate.render({
elem: '#test'
,change: function(value, date, endDate){
ins1.hint(value); //在控件上弹出value值
}
});

22)配置基础路径

如果你不是采用 layui 或者普通 script 标签方式加载的 laydate.js,而是采用 requirejs 等其它方式引用 laydate,那么你需要设置基础路径,以便 laydate.css 完成加载。

样例如下:
laydate.path = '/static/xxx/'; //laydate.js 所在目录//配置好路径后,再调用
laydate.render(options);

23)​​​​​​​其它方法

方法名 备注
laydate.getEndDate(month, year) 获取指定年月的最后一天,month默认为当前月,year默认为当前年。如:
var endDate1 = laydate.getEndDate(10); //得到31
var endDate2 = laydate.getEndDate(2, 2080); //得到29

3,参考来源

https://www.layui.com/v1/doc/modules/laydate.html

layui之laydate组件简介相关推荐

  1. layui之laydate日期组件在done中重新渲染

    layui日期组件问题 layui组件在完成渲染赋值,在渲染时赋值均无问题, 最近遇到在done回调时发现赋值失败,参考其他人的写法特别复杂,我的这个写法简单且实用 思路:给我的input换个身体 h ...

  2. 二十八、layui的日历组件使用

    <!DOCTYPE html> <html><head><meta charset="UTF-8"><title>日期& ...

  3. 【Flutter】Image 组件 ( Image 组件简介 | Image 构造函数 | Image.network 构造函数 | Image.asset 构造函数 )

    文章目录 一.Image 组件简介 二.Image 构造函数 三.Image.network 构造函数 四.Image.file 构造函数 五.Image.asset 构造函数 六.Image.mem ...

  4. 【Flutter】Flutter 布局组件 ( 布局组件简介 | Row 组件 | Column 组件 | SizedBox 组件 | ClipOval 组件 )

    文章目录 一.Flutter 布局相关的组件简介 二.Row 和 Column 组件 三.SizedBox 组件 四.ClipOval 组件 五. 完整代码示例 六. 相关资源 一.Flutter 布 ...

  5. layui如何集成文件服务器,layui使用upload组件实现文件上传功能

    layui使用upload组件实现文件上传功能 发布时间:2020-05-22 17:25:25 来源:亿速云 阅读:309 作者:鸽子 背景:页面上一个按钮,点击弹出上传框,从按钮的方法代码开始写: ...

  6. Py之jieba:Python包之jieba包(中文分词最好的组件)简介、安装、使用方法之详细攻略

    Py之jieba:Python包之jieba包(中文分词最好的组件)简介.安装.使用方法之详细攻略 目录 jieba简介 jieba安装 jieba使用方法 1.进行分词 jieba简介 jieba应 ...

  7. layui 单独使用日期组件

    <!DOCTYPE html> <html> <head><meta charset="utf-8"><title>la ...

  8. amazeui学习笔记二(进阶开发2)--Web组件简介Web Component

    amazeui学习笔记二(进阶开发2)--Web组件简介Web Component 一.总结 1.amaze ui:amaze ui是一个web 组件, 由模板(hbs).样式(LESS).交互(JS ...

  9. Docker生态系统:常规组件简介

    Docker生态系统:常规组件简介 提供:ZStack社区 系列教程 本教程为<Docker生态系统>系列全五篇中的第一篇. 内容简介 容器技术旨在通过一种可移植且可预测的方式实现应用程序 ...

最新文章

  1. 20150728月度会议
  2. VMware下Mac系统自适应屏幕
  3. 惹怒程序员的下场!阿里达摩院大神受不了骚扰电话,业余发起“二哈”AI,315后爆红...
  4. CSS3制作3D水晶糖果按钮
  5. nohup方式 真正的后台不挂断运行程序
  6. 简单工厂模式 简单例子
  7. 请问手机有没有简单好用图片去水印app?这4款手机软件可以实现去水印
  8. sql 去重查询 distinct
  9. 如何一周之内摸清一个行业?
  10. python for data analysis 操作usagov_bitly_data示例
  11. Json使用详解(配合Ajax异步请求)
  12. VUE实现长时间未操作退出登录
  13. 一位拖延症患者程序员的自我救赎!
  14. 壳与加壳脱壳基础知识
  15. PyCharm谷歌翻译插件Translation提示:更新 TKK 失败,请检查网络连接
  16. URL请求加密 参数的sign签名 与验签
  17. 一次当晋级评委的经历
  18. APP安全性测试总结-移动APP安全测试
  19. ios12完美深色模式插件_看了微信的暗黑模式后,我也适配了一波安卓!
  20. 谷歌chrome浏览器设置成深色(dark)模式

热门文章

  1. 你想象不到,3D打印技术在国外高超声速技术领域达到什么程度了
  2. 6个CFD后处理技巧,提高可视化效率和质量
  3. uniapp 微信小程序分享功能
  4. CMPUT 291 (Fall 2018 LAB LEC): Mini-Project
  5. BlockingQueue阻塞队列原理以及实现
  6. windows下搭建Git服务器
  7. PMBOK第六版-十五至尊图
  8. 必看,国家公务员考试报考时间|选岗技巧|报名证件照要求
  9. RocketMQ源码分析之延迟消息
  10. 迅雷深度布局家庭互联网