2,layui-laydate日期和时间组件文档

<!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"   placeholder="yyyy-MM-dd">
</div>
 
<script src="/static/build/layui.js"></script>
<script>
layui.use('laydate', function(){
  var laydate = layui.laydate;
  
  //执行一个laydate实例
  laydate.render({
   elem: '#test1' //指定元素
            , type: 'datetime'
        //    , range: true  //或者 range: '~' 来自定义分隔符
            //  ,value: new Date()  //value默认初始值为当前时间
            //   ,isInitValue: true //是否默认允初始值,默认为true
          , min: '2017-8-11 12:30:00' //日期时间有效范围的设定:
            , max: '2119-8-18 12:30:00' //日期时间有效范围的设定:
            //   ,trigger: 'focus' //采用 click弹出
            , zIndex: 99999999 //层叠顺序
            ,showBottom: true //是否显示的底部栏
    ,btns:['clear', 'now', 'confirm']  //btns 工具按钮
            ,lang: 'cn'    //lang- 语言 cn(中文版)、en(国际版,即英文版)。
            ,theme: 'molv'      //主题颜色
            ,calendar: true   //允许显示公里节日
            ,mark: {
  '0-10-14': '生日'
                ,'0-12-31': '跨年' //每年12月31日
                ,'0-0-10': '工资' //每个月10号
                ,'2019-8-15': '' //具体日期
                ,'2019-8-20': '预发' //如果为空字符,则默认显示数字+徽章
                ,'2019-8-21': '发布'
  });
,ready:function (date) {
                console.log(date);//  得到初始化的日期时间对象
            }
            ,change: function(value, date, endDate){
                console.log(value); //得到日期生成的值,如:2017-08-18
                console.log(date); //得到日期时间对象:{ipt>
</body>
</html>

type - 控件选择类型

类型:String,默认值:date

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

//年选择器
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'
});
     

range - 开启左右面板范围选择

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

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

//年范围选择
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: '~' 来自定义分割字符
});

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日' //可任意组合
});
      ```
#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 的时间戳
});

isInitValue - 初始值填充

类型:Boolean,默认值:true

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

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

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'
});
```

position - 定位方式

类型:String,默认值:absolute

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

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

【HTML】
<span id="testView"></span>
<div id="test2"></div>
 
【JS】:      
//嵌套在指定容器中
laydate.render({
  elem: '#test2'
  ,position: 'static'
  ,change: function(value, date){ //监听日期被切换
    lay('#testView').html(value);
  }
});

zIndex - 层叠顺序

类型:Number,默认值:66666666

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

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

showBottom - 是否显示底部栏

类型:Boolean,默认值:true

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

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

btns - 工具按钮

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

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

//只显示清空和确认
laydate.render({
  elem: '#test'
  ,btns: ['clear', 'confirm']
});
      ```
#lang - 语言
类型:String,默认值:cn

我们内置了两种语言版本:cn(中文版)、en(国际版,即英文版)。这里并没有开放自定义文字,是为了避免繁琐的配置。
//国际版
laydate.render({
  elem: '#test'
  ,lang: 'en'
});
```

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类,以便于你单独定制主题。

calendar - 是否显示公历节日

类型:Boolean,默认值:false

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

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

# 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周年');
    }
  }
});

控件初始打开的回调

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

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)才会返回。对象成员同上。
  }
});
<!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"   placeholder="yyyy-MM-dd">
</div>
 
<script src="/static/build/layui.js"></script>
<script>
layui.use('laydate', function(){
  var laydate = layui.laydate;
  
  //执行一个laydate实例
  laydate.render({
    elem: '#test1' //指定元素
  ,type: 'datetime'   //日期选择时间器
  });
});
</script>
</body>
</html>



猜你喜欢

转载自blog.csdn.net/weixin_33816821/article/details/87454147