1. 程式人生 > >快速上手日期插件laydate

快速上手日期插件laydate

格子 div 解決 模塊使用 image options 切換 clas pre

1、laydate

  這款插件有獨立版的,也有作為layui模塊的,兩種使用方式差不多,就引入有區別而已

<!--這是作為模塊使用-->
<!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" class="layui-input" id="test1"> </div> <script src="/static/build/layui.js"></script> <script> layui.use(
‘laydate‘, function(){ var laydate = layui.laydate; //執行一個laydate實例 laydate.render({ elem: ‘#test1‘ //指定元素 }); }); </script> </body> </html>

<!--獨立使用-->

<!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>

2、參數說明:

elem:綁定的元素

type:控件選擇類型,有year(年)、month(年月)、date(默認值,年月日)、time(時分秒)、datetime(年月日 時分秒)

range:true或者範圍連接符 開啟範圍選擇,也可自定義範圍連接符為‘~’或者其他

format :定義格式yyyy(年,四位數,不足補0)、y(年,任意位數)、MM(月,兩位)、M(1位數)、dd、d、HH、H、mm、m、ss、s

value:初始值,必須遵循format定義的格式,如:‘2018-08-24‘

isInitValue : 初始值填充(配合value使用,默認值為:true)

min/max :最小/大範圍內的日期時間值(

  如果值是字符串,必須嚴格遵循日期格式,如果是整數,小於86400000,則表示幾天前或幾天後;大於86400000,則會將時間戳轉化為日期格式。如:最大日期:公元2018年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‘
});

trigger : 自定義彈出控件的事件,默認值:focus,如果綁定的元素非輸入框,則默認事件為:click

show:直接顯示,默認為false。如果是外部事件調用,需要設定 closeStop: ‘觸發的元素‘

position :abolute(絕對定位,始終吸附在綁定元素周圍。默認值),fixed(固定定位,初始吸附在綁定元素周圍,不隨瀏覽器滾動條所左右。),static(靜態定位,控件將直接嵌套在指定容器中。)

zIndex :層疊順序,一般用於解決與其它元素的互相被遮掩的問題。如果 position 參數設為 static 時,該參數無效。

showBottom :是否顯示底部欄,默認為:true

btns : 工具按鈕,默認值:[‘clear‘, ‘now‘, ‘confirm‘]

lang :語言cn、en

themedefault(默認簡約)、molv(墨綠背景)、#顏色值(自定義顏色背景)、grid(格子主題)

calendar :是否顯示公歷節日,默認false

mark : 標註重要日子

mark: {
‘0-10-14‘: ‘生日‘
,‘0-12-31‘: ‘跨年‘ //每年12月31日
,‘0-0-10‘: ‘工資‘ //每個月10號
,‘2017-8-15‘: ‘‘ //具體日期
,‘2017-8-20‘: ‘預發‘ //如果為空字符,則默認顯示數字+徽章
,‘2017-8-21‘: ‘發布‘
}

3、幾個觸發事件

控件初始打開的回調:

laydate.render({
  elem: ‘#test‘
  ,ready: function(date){
    console.log(date); //得到初始的日期時間對象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
  }
});

日期時間被切換後的回調

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)才會返回。對象成員同上。
  }
});

控件選擇完畢後的回調

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)才會返回。對象成員同上。
  }
});

彈出控件提示

laydate.path = ‘/static/xxx/‘; //laydate.js 所在目錄
 
//配置好路徑後,再調用
laydate.render(options);

4、完整案例(開始日期和結束日期相互約束)

技術分享圖片

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <title>laydate</title>
    <!-- 引入css js -->
    <link rel="stylesheet" href="css/layui.css">
    <script src="layui.js"></script>
</head>
<body>      

    <input name="start" id="search-date-start" type="text" readonly  class="int2"><input name="end" id="search-date-end" type="text" readonly  class="int2">
    <script>
        layui.use(‘laydate‘, function () {
            var laydate=layui.laydate;
            var today = new Date();
            var todayDate = today.getFullYear()+"-" + (today.getMonth()+1) + "-" + today.getDate();//今天
            var startDate = laydate.render({
                elem: ‘#search-date-start‘,
                max: todayDate,
                done: function(value, date){
                    endDate.config.min ={
                        year:date.year,
                        month:date.month-1, //關鍵
                        date: date.date,
                    };
                }
            });
            var endDate = laydate.render({
                elem: ‘#search-date-end‘,
                max: todayDate,
                done: function(value, date){
                        startDate.config.max ={
                        year:date.year,
                        month:date.month-1, //關鍵
                        date: date.date,
                    };
                }
            });
        });
    </script>
</body>
</html>

快速上手日期插件laydate