layui下載地址:http://www.layui.com/
此控件可使用layui或者獨立版的layDate,兩者初始化有些不同
1.在 layui 模塊中使用layui.code
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>layDate快速使用</title> <link rel="stylesheet" href="/static/build/layui.css" media="all"> </head> <body> <div class="layui-inline"> <!-- 注意:這一層元素並不是必須的 --> <input type="text" id="laydate-startTime" placeholder="請輸入開始時間" name="startTime"/> 至 <input type="text" id="laydate-endTime" placeholder="請輸入截止時間" name="endTime"/> </div> <script src="/static/build/layui.js"></script> <script> <!-- laydate示例 --> layui.use('laydate', function(){ var laydate = layui.laydate; var startDate = laydate.render({ elem: '#laydate-startTime', max: $('#laydate-endTime').val(), type:'datetime', theme: 'molv', trigger: 'click', done: function(value, date) { // 結束時間大於開始時間 if (value !== '') { endDate.config.min.year = date.year; endDate.config.min.month = date.month - 1; endDate.config.min.date = date.date; } else { endDate.config.min.year = ''; endDate.config.min.month = ''; endDate.config.min.date = ''; } } }); var endDate = laydate.render({ elem: '#laydate-endTime', min: $('#laydate-startTime').val(), type:'datetime', theme: 'molv', trigger: 'click', done: function(value, date) { // 開始時間小於結束時間 if (value !== '') { startDate.config.max.year = date.year; startDate.config.max.month = date.month - 1; startDate.config.max.date = date.date; } else { startDate.config.max.year = ''; startDate.config.max.month = ''; startDate.config.max.date = ''; } } }); }); </script> </body> </html>
2.作為獨立組件使用layui.code
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>使用 layDate 獨立版</title> </head> <body> <input type="text" id="test1"> <script src="laydate.js"></script> <script> //執行一個laydate實例 laydate.render({ elem: '#test1' //指定元素 }); </script> </body> </html>
詳細配置和事件觸發,如下注釋寫的很清楚了
laydate.render({
elem: '#test' //或 elem: document.getElementById('test')、elem: lay('#test') 等(類型:String/DOM,默認值:無必填項,用於綁定執行日期渲染的元素,值一般為選擇器,或DOM對象)
,type: 'year'//year-只提供年列表選擇||month-只提供年、月選擇||date-可選擇:年、月、日。type默認值,一般可不填||time-只提供時、分、秒選擇||datetime-可選擇:年、月、日、時、分、秒
,range: true //或 range: '~' 來自定義分割字符
,format: 'yyyy年MM月dd日' //可任意組合 yyyy年MM月dd日 HH時mm分ss秒===2017年08月18日 20時08分08秒,'yyyy/mm/dd'
,value: '2018-08-18' //必須遵循format參數設定的格式String,默認值:new Date()
,min: '2017-1-1'//min/max - 最小/大范圍內的日期時間值 類型:string,默認值:min: '1900-1-1'、max: '2099-12-31'
,max: '2017-12-31'
,trigger: 'click' // 自定義彈出控件的事件(類型:String,默認值:focus,如果綁定的元素非輸入框,則默認事件為:click)-采用click彈出
,show: true //默認顯示-類型:Boolean,默認值:false;;;;如果設置: true,則控件默認顯示在綁定元素的區域。通常用於外部事件調用控件
,position: 'static'//類型:String,默認值:absolute (fixed,absolute,static)
,zIndex: 99999999//層疊順序-類型:Number,默認值:66666666一般用於解決與其它元素的互相被遮掩的問題。如果 position 參數設為 static 時,該參數無效
,showBottom: false//是否顯示底部欄--類型:Boolean,默認值:true如果設置 false,將不會顯示控件的底部欄區域
,btns: ['clear', 'now', 'confirm']//類型:Array,默認值:['clear', 'now', 'confirm'](顯示清空,今天,確認)
,lang: 'en'//語言類型:String,默認值:cn--內置了兩種語言版本:cn(中文版)、en(國際版,即英文版)
,theme: 'grid'//主題-類型:String,默認值:default,theme的可選值有:default(默認簡約)、molv(墨綠背景)、#顏色值(自定義顏色背景)、grid(格子主題)
,calendar: true//是否顯示公歷節日--類型:Boolean,默認值:false
,mark: {//標注重要日子--類型:Object,默認值:無
'0-10-14': '生日'
,'0-12-31': '跨年' //每年12月31日
,'0-0-10': '工資' //每個月10號
,'2017-8-15': '' //具體日期
,'2017-8-20': '預發' //如果為空字符,則默認顯示數字+徽章
,'2017-8-21': '發布'
}
,ready: function(date){//控件在打開時觸發,回調返回一個參數
console.log(date); //得到初始的日期時間對象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
}
,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)才會返回。對象成員同上。
}
,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)才會返回。對象成員同上。
}
});
------------------------------------------------------------------------------------------------------------------------------------------------分割線-----------------------------------------------------------------------------------------------------------------------------------------------------------------
ps:range的用法
layui.use('laydate', function(){
var laydate = layui.laydate;
//執行一個laydate實例
laydate.render({
elem: '#test1', //指定元素
range:'~',
value: '2019-04-16 ~ 2019-04-19'
});
});
設置默認值時value 的值不是用數組,是要用跟input中展示的格式一樣,這樣點擊input會自動顯示默認區間范圍
range也可以寫成 range:true ,這樣分隔符默認為 ‘-’ ,也就是2019-04-16 - 2019-04-19