zoukankan      html  css  js  c++  java
  • bootstrap日期范围选择插件daterangepicker详细使用方法

    插件官方网站地址

    bootstrap-daterangepicker是个很方便的插件,但是对我这种菜鸟来说,文档不够详细,摆弄了好久才整好。记录下来供以后参考,也希望能帮到有需要的朋友。

    目前版本是2.1.25,以下使用方法均相当于此版本。

    1. 所需静态文件

    • jquery@1.11.3_2
    • bootstrap@3.3.4
    • momentjs:moment@2.10.3
    • daterangepicker.js
    • daterangepicker.css

    我一开始自己用的是bootstrap 4,jquery也用的最新版本,出来很多错误,暂时先改到文档中要求的版本。

    将这些文件引入到网页中。 

    2. 定制

    在官方网站上可以根据自己的需要定制并预览选择器。下面是各种选项:

    每种选项的变化都可以在下面的选择器中预览,点击弹出窗口就可看到效果:

    同时生成了代码在这个框中,这些代码后面要用到:

    3. html代码

    html代码可以多种多样,我用一个最简单的结合了bootstrap样式的输入框:

    <div class="col-sm-4 input-group" id="date-picker">
        <span class="input-group-addon" id="basic-addon">日期范围</span>
        <input type = "text" id="date-range" class="form-control">
        <i id="calendar-icon" class="fa fa-calendar"></i>
    </div>
    

    4. 加入js代码

    在body的最后,加入以下js代码:

    <script type = "text/javascript">
        $(document).ready(function () {
            $('#date-range').daterangepicker({
                "showDropdowns": true,
                "showISOWeekNumbers": true,
                "ranges": {
                    '今天': [moment(), moment()],
                    '昨天': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
                    '近一周': [moment().subtract(6, 'days'), moment().subtract(6, 'days')],
                    '近一个月': [moment().subtract(29, 'days'), moment()],
                    '本月': [moment().startOf('month'), moment().endOf('month')],
                    '上个月': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
                },
    
                "locale": {
                    "format": "YYYY/MM/DD",
                    "separator": " - ",
                    "applyLabel": "确定",
                    "cancelLabel": "取消",
                    "fromLabel": "从",
                    "toLabel": "到",
                    "customRangeLabel": "自定义",
                    "weekLabel": "周",
                    "daysOfWeek": [
                        "日",
                        "一",
                        "二",
                        "三",
                        "四",
                        "五",
                        "六"
                    ],
                    "monthNames": [
                        "1月",
                        "2月",
                        "3月",
                        "4月",
                        "5月",
                        "6月",
                        "7月",
                        "8月",
                        "9月",
                        "10月",
                        "11月",
                        "12月"
                    ],
                    "firstDay": 1
                },
                "alwaysShowCalendars": true,
                "startDate": moment().subtract(6, 'days'),
                "endDate": moment(),
                "minDate": "2017年01月01日",
                "linkedCalendars": false,
                "maxDate": "2019年12月31日"
            }, function (start, end, label) {
                console.log("New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')");
            });
        });
    </script>
    

    .daterangepicker后面的内容就是前面第二步最后自定义选项生成的代码。其中"ranges"选项需要修改成上面代码中这种动态的日期,不要用网站中选项生成的固定日期。
    其中"locale"字典中是汉化内容。

    5. 遇到的坑

    1. 没有把ranges选项中的日期改成动态的,用的直接复制过来的日期,一直显示无效;

    2. 设置maxDate和minDate时的默认格式为MM/DD/YYYY,前面locale里想设置成YYYY-MM-DD,结果总是无效;可以设置成MM-DD-YYYY或者MM-DD,YYYY,但就是不能设置成年份在最前面。后来将maxDate和minDate选项的数据也改成YYYY-MM-DD格式,才终于解决了问题。

    3. 月份汉化以后,月份选择框和年份选择框垂直方向不对齐,看着非常别扭。在font-family最后加入"宋体",问题解决(我用的chorme,不知道其他浏览器能不能解决)。

    6.最终效果

    如果帮到你了,请帮忙点赞! :-)

  • 相关阅读:
    jquery animate()方法 语法
    jquery unload方法 语法
    jquery undelegate()方法 语法
    jquery unbind()方法 语法
    jquery trigger() 方法 语法
    jquery toggle()方法 语法
    jquery change() 函数 语法
    jquery blur()函数 语法
    jquery bind()方法 语法
    jquery checked选择器 语法
  • 原文地址:https://www.cnblogs.com/dreamkeeper/p/7758316.html
Copyright © 2011-2022 走看看