前言: css
今天爲了找日期插件也花了很多的時間,找了好幾個放到項目上都用不了。很煩,終於在晚上找到了這款 Laydate 插件,很是簡單,好用。java
日期效果也不錯,記錄一下。mybatis
(一) Laydate 下載,分享百度雲連接spa
連接:https://pan.baidu.com/s/1m9w7rI18ZIQULyeki_sBfg 插件
提取碼:ge7b
code
(二) 用法介紹orm
(1) 將下載的文件解壓對象
(2) 將js 文件放到 項目的js文件夾下,將theme放到css文件夾下blog
(3) 分別再對應的頁面中引入css 和 js 事件
1 引入css 引入的位置不對,可能會報錯,放在title 或 head 標籤下方 (我是放在了head下方,開始放在head裏面報錯了) 有錯的話,本身換一換位置就好。
<link rel="stylesheet" href="/css/laydate.css"/> //換成本身的路徑
2 引入js JS的位置儘可能往上放吧, 否則也會報錯。
<script src="/js/laydate.js"></script> //換成本身的路徑
(4)寫<input> 和 加載插件 (例)
<input id="specimencollectdate" type="text">
<srcipt>
laydate.render({
elem: '#specimencollectdate'
});
</script>
注意: 這個日期傳入後臺,在mybatis中 不能判斷其 爲空字符串,不然會報錯(invalid comparison: java.util.Date and java.lang.String)
緣由是mybatis 3.3.0中對於時間參數進行比較時的一個bug. 若是拿傳入的時間類型參數與空字符串''進行對比判斷則會引起異常. 因此在上面的代碼中去該該判斷, 只保留非空判斷就正常了
(5)laydate 提供的參數 (供參考)
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秒 ,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)纔會返回。對象成員同上。 } });
彈出效果展現
本身遇到的小問題,記錄一下。 下次別再這樣的問題上浪費時間了。