laydate 自定义bootstrap皮肤及控件封装

本文介绍了一种laydate插件的自定义Bootstrap主题,使日期选择器与Bootstrap风格的UI无缝对接,提供了丰富的日期操作功能,包括日期、时间、年月等不同类型的输入,并支持时间范围、节假日标记、自定义格式等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主题

得益于laydate的强大,可以很方便的进行日期操作。但是,自带样式和主题与采用bootstrap风格的UI不太协调,遂自己写了一套bootstrap版的主题,与bootstrap风格的UI完美兼容。

效果图

控件

用法

<div class="form-horizontal">
    <div class="row">
        <div class="col-sm-12">
            <div class="section-title">
                <h3>基础</h3>
            </div>
            <div class="hr-line-dashed"></div>
            <div class="section-content">
                <div class="form-group">
                    <label class="col-sm-2 control-label">年月日:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="date" value="2018-08-08" class="form-control" placeholder="时间">
                    </div>
                    <label class="col-sm-2 control-label">年月日时分秒:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="datetime" value="2018-08-08 12:00:00" class="form-control" placeholder="时间">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">时分秒:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="time" value="12:00:00" class="form-control" placeholder="时间">
                    </div>
                    <label class="col-sm-2 control-label">年:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="year" value="2019" class="form-control" placeholder="时间">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">年月:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="month" value="2019-06" class="form-control" placeholder="时间">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">默认当前日期:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="date" value="" data-date-now="true" class="form-control" placeholder="时间">
                    </div>
                    <label class="col-sm-2 control-label">不默认当前日期:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="date" value="" class="form-control" placeholder="时间">
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-12">
            <div class="section-title">
                <h3>时间范围</h3>
            </div>
            <div class="hr-line-dashed"></div>
            <div class="section-content">
                <div class="form-group">
                    <label class="col-sm-2 control-label">年月日:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="date" data-date-range="true" value="2019-06-08 - 2019-07-08" class="form-control" placeholder="时间">
                    </div>
                    <label class="col-sm-2 control-label">年月日时分秒:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="datetime" data-date-range="true" value="2019-06-08 12:00:00 - 2019-07-08 12:00:00" class="form-control" placeholder="时间">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">时分秒:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="time" data-date-range="true" value="12:00:00 - 17:00:00" class="form-control" placeholder="时间">
                    </div>
                    <label class="col-sm-2 control-label">年:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="year" data-date-range="true" value="2019 - 2025" class="form-control" placeholder="时间">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">年月:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="month" data-date-range="true" value="2019-06 - 2019-10" class="form-control" placeholder="时间">
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-12">
            <div class="section-title">
                <h3>公立节假日</h3>
            </div>
            <div class="hr-line-dashed"></div>
            <div class="section-content">
                <div class="form-group">
                    <label class="col-sm-2 control-label">年月日:</label>
                    <div class="col-sm-4">
                        <input type="text" class="form-control" placeholder="时间" data-toggle="laydate" data-date-type="date" value="2019-06-08" data-date-holiday="true">
                    </div>
                    <label class="col-sm-2 control-label">年月日时分秒:</label>
                    <div class="col-sm-4">
                        <input type="text" class="form-control" placeholder="时间" data-toggle="laydate" data-date-type="datetime" value="2019-08-08 12:00:00" data-date-holiday="true">
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-12">
            <div class="section-title">
                <h3>自定义重要日期</h3>
            </div>
            <div class="hr-line-dashed"></div>
            <div class="section-content">
                <div class="form-group">
                    <label class="col-sm-2 control-label">每年日期:</label>
                    <div class="col-sm-4">
                        <input type="text" class="form-control" placeholder="时间" data-toggle="laydate" data-date-type="date" value="2019-06-08" data-date-holiday="true" data-date-day='{"0-9-8":"国耻"}'>
                    </div>
                    <label class="col-sm-2 control-label">每月日期:</label>
                    <div class="col-sm-4">
                        <input type="text" class="form-control" placeholder="时间" data-toggle="laydate" data-date-type="datetime" value="2019-09-08 12:00:00" data-date-holiday="true" data-date-day='{"0-0-15":"中旬"}'>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">特定日期:</label>
                    <div class="col-sm-4">
                        <input type="text" class="form-control" placeholder="时间" data-toggle="laydate" data-date-type="date" value="2019-06-08" data-date-holiday="true" data-date-day='{"2019-7-21":"会议"}'>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-12">
            <div class="section-title">
                <h3>最小/大范围</h3>
            </div>
            <div class="hr-line-dashed"></div>
            <div class="section-content">
                <div class="form-group">
                    <label class="col-sm-2 control-label">年月日(前后N天):</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="date" data-date-min="-7" data-date-max="7" class="form-control" placeholder="时间">
                    </div>
                    <label class="col-sm-2 control-label">年月日时分秒(前后N天):</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="datetime" data-date-min="-7" data-date-max="7" class="form-control" placeholder="时间">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">年月日(具体某天):</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="date" data-date-min="2019-05-05" data-date-max="2020-08-08" class="form-control" placeholder="时间">
                    </div>
                    <label class="col-sm-2 control-label">年月日时分秒(具体某天):</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="datetime" data-date-min="2019-05-05" data-date-max="2020-08-08" class="form-control" placeholder="时间">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">年月日(混合使用):</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="date" data-date-min="-7" data-date-max="2020-08-08" class="form-control" placeholder="时间">
                    </div>
                    <label class="col-sm-2 control-label">年月日时分秒(混合使用):</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="datetime" data-date-min="2019-05-05" data-date-max="7" class="form-control" placeholder="时间">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">时分秒:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="time" value="12:00:00" data-date-min="8:30:00" data-date-max="17:30:00" class="form-control" placeholder="时间">
                    </div>
                    <label class="col-sm-2 control-label">年:</label>
                    <div class="col-sm-4">
                        <p class="form-control-static">不支持</p>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">年月:</label>
                    <div class="col-sm-4">
                        <p class="form-control-static">不支持</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-12">
            <div class="section-title">
                <h3>自定义格式</h3>
            </div>
            <div class="hr-line-dashed"></div>
            <div class="section-content">
                <div class="form-group">
                    <label class="col-sm-2 control-label">年月日:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="date" value="2018/08/08" data-date-format="yyyy/MM/dd" class="form-control" placeholder="时间">
                    </div>
                    <label class="col-sm-2 control-label">年月日时分秒:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="datetime" value="2018/08/08 12:00:00" data-date-format="yyyy/MM/dd HH:mm:ss" class="form-control" placeholder="时间">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">时分秒:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="time" value="12时00分00秒" data-date-format="HH时mm分ss秒" class="form-control" placeholder="时间">
                    </div>
                    <label class="col-sm-2 control-label">年:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="year" value="2019年" data-date-format="yyyy年" class="form-control" placeholder="时间">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">年月:</label>
                    <div class="col-sm-4">
                        <input type="text" data-toggle="laydate" data-date-type="month" value="2019年06月" data-date-format="yyyy年MM月" class="form-control" placeholder="时间">
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-12">
            <div class="section-title">
                <h3>特殊用法</h3>
            </div>
            <div class="hr-line-dashed"></div>
            <div class="section-content">
                <div class="form-group">
                    <label class="col-sm-2 control-label">非input元素:</label>
                    <div class="col-sm-4"> <span class="form-control" data-toggle="laydate" data-date-type="date" data-date="2018-08-08"></span>

                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

源码

//初始化laydate
        $("[data-toggle='laydate']").each(function () {
            var type = $(this).data("date-type") || "date";
            var range = $(this).data("date-range") || false;
            var isInitialNow = $(this).data("date-now") || false;
            var initialDate = ($(this).is("input") ? $(this).val() : $(this).data("date")) || (isInitialNow ? new Date() : "");
            var min = $(this).data("date-min") || 86400000;
            var max = $(this).data("date-max") || 4073558400000;
            var format = $(this).data("date-format") || formats[type];
            var calendar = $(this).data("date-holiday") || false;
            var mark = $(this).data("date-day") || "{}";
            var showClear = ($(this).data("date-show-clear") === undefined || $(this).data("date-show-clear")) ? true : false;
            var showNow = ($(this).data("date-show-now") === undefined || $(this).data("date-show-now")) ? true : false;
            var showConfirm = $(this).data("date-show-confirm") === undefined || $(this).data("date-show-confirm") ? true : false;
            var showBottom = ($(this).data("date-show-bottom") === undefined || $(this).data("date-show-bottom")) ? ((showClear || showNow || showConfirm) ? true : false) : false;

            var btns = [btn_clear, btn_now, btn_confirm];

            if (!showClear) btns.splice($.inArray(btn_clear, btns), 1);
            if (!showNow) btns.splice($.inArray(btn_now, btns), 1);
            if (!showConfirm) btns.splice($.inArray(btn_confirm, btns), 1);

            laydate.render({
                elem: this,
                value: initialDate,
                // trigger: "click",
                type: type,
                theme: "bootstrap",
                range: range,
                min: min,
                max: max,
                format: format,
                calendar: calendar,
                mark: mark,
                showBottom: showBottom,
                btns: btns
            });
        });

相关源码

gitee:https://gitee.com/xbd521/laydate-theme-bootstrap

github:https://github.com/liuminglei/laydate-theme-bootstrap

注意事项

必须引入bootstrap.css/bootstrap.min.css样式依赖

必须引入jquery依赖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值