laydate组件

layui.laydate 时间日期组件:点击打开链接

主要以:年选择器年月选择器日期选择器时间选择器日期时间选择器 五种类型的选择方式为基本核心,并且均支持范围选择(即双控件)。内置强劲的自定义日期格式解析和合法校正机制,含中文版和国际版,主题简约却又不失灵活多样。

可以在 layui 中使用 layDate,也可直接使用 layDate 独立版,下面在layui中使用laydate组件

引入layui.css 和 layui.js 文件,然后执行一个laydate实例。

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

laydate核心通过基础参数来配置组件.

	<div class="layui-contanier">
		<form class="layui-form layui-form-pane" action="">
			<div class="layui-form-item">
				<label class="layui-form-label">账号</label>
				<div class="layui-input-inline">
					<input type="text" name="account" required lay-verify="required" placeholder="请输入账号" autocomplete="off" class="layui-input"/>
				</div>
			</div>
			<div class="layui-form-item">
				<label class="layui-form-label">laydate</label>
				<div class="layui-input-inline">
					<input type="text" name="startTime" id="startTime" required lay-verify="required" placeholder="请输入时间" autocomplete="off" class="layui-input"/>
				</div>
			</div>
			
			<div class="layui-form-item">
				<div class="layui-input-block">
					<button class="layui-btn" lay-submit lay-filter="formDemo">提交</button>
					<button type="reset" class="layui-btn layui-btn-primary">重置</button>
				</div>
			</div>
		</form>
	</div>

<script type="text/javascript" src="./js/jquery-3.3.1.min.js"></script>	<!-- 可加自己的jquery -->
<script type="text/javascript" src="./plugins/layui/layui.js"></script>
	<script type="text/javascript">
		layui.use(['form','layer','laydate'],function(){
			var form = layui.form;
			var layer = layui.layer;
			var laydate = layui.laydate;
			
			//监听提交按钮
			form.on('submit(formDemo)',function(data){
				layer.msg(JSON.stringify(data.field));  /* 表单json数据 */
				return false;
			});
			//执行一个laydate实例
			laydate.render({
				elem: '#startTime' //指定元素
			});
		})
	</script>

基础参数:

1. elem -- 绑定日期元素

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


2. type -- 控件选择类型

类型:String,默认值:date

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

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

//执行一个laydate实例
laydate.render({
	elem: '#startTime', //指定元素
	type: 'date'    //日期选择器
});


3. range -- 开启左右(相邻)面板范围选择

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

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

//执行一个laydate实例
laydate.render({
	elem: '#startTime', //指定元素
	type: 'date',
	range: '~', 
});


4. format -- 自定义格式

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

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

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

			//执行一个laydate实例
			laydate.render({
				elem: '#startTime', //指定元素
				type: 'datetime',
				format: '北京时间:yyyy年MM月dd日 HH时mm分ss秒'  //可任意组合
			});


5. value -- 初始值

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

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

			//执行一个laydate实例
			laydate.render({
				elem: '#startTime', //指定元素
				value: '2018-07-03' //必须遵循format参数设定的格式'-'
			});


6. isInitValue --是否允许填充初始值

			//执行一个laydate实例
			laydate.render({
				elem: '#startTime', //指定元素
				value: '2018-07-03',
				isInitValue: false //是否允许填充初始值,默认为 true
			});

7. 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日

//执行一个laydate实例
			laydate.render({
				elem: '#startTime', //指定元素
				type: 'date',
				min: -7,
				max: +7
			});

8. trigger -- 自定义弹出控件的时间

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

			laydate.render({
				elem: '#startTime', //指定元素
				trigger: 'dblclick'	//双击
			});

9. show-- 默认显示

类型:Boolean,默认值:false

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

			laydate.render({
				elem: '#startTime', //指定元素
				show: true //直接显示(不推荐)
			})

10. position -- 定位方式

类型:String,默认值:absolute

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

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

11. showBottom -- 是否显示底部栏

			laydate.render({
				elem: '#startTime', //指定元素
				showBottom: false	//默认为true
			});

12. btns -- 底部栏工具按钮

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

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

			laydate.render({
				elem: '#startTime', //指定元素
				btns: ['clear','confirm']
			});

13. lang -- 语言

类型:String,默认值:cn

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

14. theme -- 主题皮肤

类型:String,默认值:default

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

15. calendar -- 是否显示公历节日

类型:Boolean,默认值:false

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

			laydate.render({
				elem: '#startTime', //指定元素
				calendar: true
			});

16. mark -- 标注重要日子

类型:Object,默认值:

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

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

			laydate.render({
				elem: '#startTime', //指定元素
				mark: {
				    '0-12-31': '跨年', //每年12月31日
				    '0-0-10': '工资', //每个月10号
				    '2018-7-15': '', //具体日期
				    '2018-07-20': '预发', //如果为空字符,则默认显示数字+徽章
				    '2018-7-21': '发布'
				  }
			});

17. 回调函数

控件初始打开的回调

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

			laydate.render({
				elem: '#startTime', //指定元素
				ready: function(date){
				    console.log(date); //得到初始的日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
				    console.log(date.year)  
				}
			});


日期时间被切换后的回调--

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


			laydate.render({
				elem: '#startTime', //指定元素
				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(date.year);
				    console.log(endDate); //得结束的日期时间对象,开启范围选择(range: true)才会返回。对象成员同上。
				  }
			});

控件选择完毕后后的回调

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


			laydate.render({
				elem: '#startTime', //指定元素
				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)才会返回。对象成员同上。
				  }
			}
   
   

17. 其他方法

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


猜你喜欢

转载自blog.csdn.net/qq_42402854/article/details/80895124