layui时间控件天、周、月、季和年的实现

实现选择框如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实现html代码如下:

 <div class="datesel flex">
            <a s_href="week"  class="selbox flex">周</a>
            <a s_href="yue"  class="selbox flex">月</a>
            <a s_href="season"  class="selbox flex">季</a>
            <a s_href="yer" class="selbox flex">年</a>
            <label class="layui-inline-label" id="worldlable">
                <input id="worldId" type="text" class="layui-input laydate-test" data-type="date">
            </label>
            <button type="button" name="button" id="search" >查询</button>
        </div>

实现js代码如下:

 layui.use(['laydate', 'layer', 'jquery'], function() {
        var laydate = layui.laydate,
            layer = layui.layer,
            $ = layui.jquery
        //日选择器
        laydate.render({
            elem: '#worldId',
            max: genTime('d'),
            value: genTime('d'),
            type: 'date'
        });
        function genTime(opt) {
            var now = new Date();
            var year = now.getFullYear();
            var mth = now.getMonth();
            var day = now.getDate();
            var month = mth + 1;
            if (month < 10) {
                month = '0' + month
            }
            if (day < 10) {
                day = '0' + day
            }
            var str;
            if (opt == 'd') {
                str = year + '-' + month + '-' + day;
            } else if (opt == 'm') {
                str = year + '-' + month;
            }
            return str;
        }
        $('div .datesel a').on('click',function(){
            var hel= $(this).attr('s_href');
            $(this).addClass("active")
                .siblings().removeClass("active");
            $("#worldId").remove();
            $("#worldlable").html(
                '<input id="worldId" type="text" class="layui-input laydate-test" data-type="date">');
            if (hel =="week"){
                $('#dtl').val("week");
                    //周选择器
                getWeek("#worldId");
            }else if (hel =="yue"){
                //月选择器
                $('#dtl').val("yue");
                laydate.render({
                    elem: '#worldId',
                    type: 'month',
                    max: genTime('m'),
                    value: genTime('m'),
                    btns: ['clear', 'confirm']
              });
            }else if (hel == "season"){
                $('#dtl').val('season');
                //季选择器
                getSeason('#worldId');
            }else if(hel == "yer"){
                $('#dtl').val('yer');
                //年选择器
                laydate.render({
                    elem: '#worldId',
                    type: 'year',
                    btns: ['clear', 'confirm']
                });
            }
        });
        function getWeek(ohd){
            var ele = $(ohd);
            laydate.render({
                elem: ohd,
                format: "yyyy-MM-dd~yyyy-MM-dd",
                btns: ['clear', 'now'],
                trigger: 'click',
                done: function (value, date, endDate) {
                    if (value != "" && value.length > 0) {
                        var today = new Date(value.substring(0, 10));
                        var weekday = today.getDay();
                        var monday;
                        var sunday;
                        if (weekday == 0) {
                            monday = new Date(1000 * 60 * 60 * 24 * (weekday - 6) + today.getTime());
                        } else {
                            monday = new Date(1000 * 60 * 60 * 24 * (1 - weekday) + today.getTime());
                        }
                        if (weekday == 0) {
                            sunday = today;
                        } else {
                            sunday = new Date(1000 * 60 * 60 * 24 * (7 - weekday) + today.getTime());
                        }
                        var month = monday.getMonth() + 1;
                        if (month < 10) {
                            month = "0" + month;
                        }
                        var day1 = monday.getDate();
                        if (day1 < 10) {
                            day1 = "0" + day1;
                        }
                        var start = "" + monday.getFullYear() + "-" + month + "-" + day1;
                        var month2 = sunday.getMonth() + 1;
                        if (month2 < 10) {
                            month2 = "0" + month2;
                        }
                        var day2 = sunday.getDate();
                        if (day2 < 10) {
                            day2 = "0" + day2;
                        }
                        var end = "" + sunday.getFullYear() + "-" + month2 + "-" + day2;
                        ele.val(start + "~" + end);
                    } else {
                        ele.val('');
                    }
                }
            });
        }
        function getSeason(ohd) {
            var ele = $(ohd);
            laydate.render({
                elem: ohd,
                type: 'month',
                format: 'yyyy年M季度',
                //range: sgl?null:'~',
                //min:"1900-1-1",
                btns: ['clear', 'confirm'],
                ready: function (value, date, endDate) {
                    var hd = $("#layui-laydate" + ele.attr("lay-key"));
                    console.log("hd=" + hd);
                    if (hd.length > 0) {
                        hd.click(function () {
                            ren($(this));
                        });
                    }
                    ren(hd);
                },
                done: function (value, date, endDate) {
                    if (!isNull(date) && date.month > 0 && date.month < 5) {
                        ele.attr("startDate", date.year + "-" + date.month);
                    } else {
                        ele.attr("startDate", "");
                    }
                    if (!isNull(endDate) && endDate.month > 0 && endDate.month < 5) {
                        ele.attr("endDate", endDate.year + "-" + endDate.month)
                    } else {
                        ele.attr("endDate", "");
                    }
                }
            });
        }
        var ren = function(thiz) {
            var mls = thiz.find(".laydate-month-list");
            mls.each(function(i, e) {
                $(this).find("li").each(function(inx, ele) {
                    var cx = ele.innerHTML;
                    console.log('inx'+inx);
                    if (inx < 4) {
                        ele.innerHTML = cx.replace(/月/g, "季度");
                    } else {
                        ele.style.display = "none";
                    }
                });
            });
        };
    });

    function isNull(s) {
        if (s == null || typeof(s) == "undefined" || s == "") return true;
        return false;
    }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值