日、周、月时间控件

本文介绍了一款用于生成不同周期(日、周、月)报表的时间选择控件实现方案,该控件使用Bootstrap3和My97DatePicker组件,并通过自定义JavaScript类进行初始化配置。

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

一、.效果图
这里写图片描述
这里写图片描述
这里写图片描述

需求描述:
1.分别按日、周、月三中类型统计,每选一种日历的日期选择方式会发生变化
2.依赖:boostrap3 、My97DatePicker时间控件(http://www.my97.net/dp/demo/index.htm)

二、html代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" />
        <script src="js/My97DatePicker/WdatePicker.js"></script>
        <!--<script src="js/My97DatePicker/lang/zh-cn.js"></script>-->
        <style type="text/css">
            .dwm-date,
            .dwm-date-content {
                display: inline-block!important;
            }

            .dwm-date-type input{
                display: none;
            }

            .dwm-date-type:hover,
            .dwm-date-type:focus,
            .dwm-active  {
                background-color: #38a8da;
                color: #fff;
            }

            .dwm-date-content {
                vertical-align: middle;
            }

            .dwm-date-content,
            .dwm-date-content > input {
                height: 100%;
            }

            .dwm-date label {
                font-weight: normal;
                padding: 0;
                margin: 0;
            }


        </style>
    </head>
    <body>
        <div id="dwm-date-container">
            <!--控件html内容-->
            <div class="dwm-date">
                <div class="btn-group" role="group">
                  <button type="button" class="btn btn-default dwm-date-type">
                    <label><input type="radio" name="day" value="0" /></label>
                  </button>
                  <button type="button" class="btn btn-default dwm-date-type">
                    <label><input type="radio" name="week" value="0" /></label>
                  </button>
                  <button type="button" class="btn btn-default dwm-date-type">
                    <label><input type="radio" name="month" value="0" /></label>
                  </button>
                </div>
                <div class="dwm-date-content">
                    <input class="form-control Wdate" type="text" />
                </div>
            </div>
        </div>
        <script type="text/javascript" 
        src="js/jquery/jquery-1.11.1.min.js" ></script>
        <script type="text/javascript" src="js/DwmDate.js" ></script>
        <script>
            //日、周、月报时间控件初始化
            var dwmDateOption = {
                id:'#dwm-date-container',
                dayStartDate:'2016-01-01',
                weekStartDate:'2016-01-01',
                monthStartDate:'2016-01-01',
                weekEndDate:'2017-01-01'
            };

            var dwmDate = new DwmDate(dwmDateOption);
            dwmDate.init();
        </script>
    </body>
</html>

三、js代码
DwmDate.js

function DwmDate(option){

    var defaultOpt = {
        id:null,
        dayStartDate:'',
        weekStartDate:'',
        monthStartDate:'',
        dayEndDate:'',
        weekEndDate:'',
        monthEndDate:'',
        dType:'week' //day、week、month
    };

    option = $.extend(true, defaultOpt,option);

    this.dayStartDate = option.dayStartDate;
    this.weekStartDate = option.weekStartDate;
    this.monthStartDate = option.monthStartDate;
    this.dayEndDate   = option.dayEndDate;
    this.weekEndDate   = option.weekEndDate;
    this.monthEndDate   = option.monthEndDate;
    this.id = option.id;
    this.dType = option.dType;
    this._dayOption = {
        isShowWeek:true,
        firstDayOfWeek:1,
        dateFmt:'yyyy-MM-dd',
        realDateFmt:'yyyy-MM-dd',
        startDate:this.dayStartDate,
        minDate:this.dayStartDate,
        maxDate:'%y-%M-{%d-1}'
    };
    this._weekOption = {
        isShowWeek:true,
        firstDayOfWeek:1,//星期一为第一天
        dateFmt:'yyyy-MM-dd',
        realDateFmt:'yyyy-MM-dd',
        startDate:this.weekStartDate,
        minDate:this.weekStartDate,
        maxDate:this.weekEndDate,
        disabledDays:[1,2,3,4,5,6]
    };

    this._monthOption = {
        dateFmt:'yyyy年MM月',
        realDateFmt:'yyyy-MM-dd',
        startDate:this.monthStartDate,
        minDate:this.monthStartDate,
        maxDate:'%y-{%M-1}-%d'
    }

}

DwmDate.prototype.getDate = function(){
    return $(this.id).find(".Wdate").val();
}

DwmDate.prototype.getDType = function(){
    return this.dType;
}

DwmDate.prototype._getWdateOpt = function(type){
    if(type==="day"){
        return this._dayOption;
    }else if(type==="week"){
        return this._weekOption;
    }else{
        return this._monthOption;
    }
}

DwmDate.prototype.init = function(){
    var that = this;
    var wDate = $(that.id).find(".Wdate").get(0);

    $(that.id+" .dwm-date-type").click(function(event){
        var $this = $(this);
        $this.addClass("dwm-active").siblings().removeClass("dwm-active");
        //初始化日期插件
        wDate.onfocus = function(){
            that.dType = $this.find("input").attr("name");
            WdatePicker(that._getWdateOpt(that.dType));
        }
        return false;
    });

    $(that.id+" .dwm-date-type")
    .find("input[name='week']")
    .parent().parent().click();
}
之前在网上想找一个简单易用的日历选择插件,发现这种前端日历插件很少,而且很多文章写的的算法都不是统一的,所以自己实现了一个基于jquery的日历插件(还支持跳转到指定年份和哦)。 插件中的算法:每为起始,第一以每年第一个星期四所在的为第一(网上找的好像这个算法比较正规) 实现的效果是在手机端,也可以在PC端用,毕竟功能才是主要的。如果觉得样式不入眼可以自行随意修改。 //调用日历方法 var weekfn = new jcalendar_week({ element: "#jcalendar_week",//填充日历的dom元素 dayaddclass:function(date){ //添加某天时给添加类名(参数:1.期)(返回类名字符串,多个以空格分开) return ""; }, dayclick:function(date,obj){ //day点击事件(参数:1.期,2.所点击DOM元素) $(obj).addClass("calendar_day_act").siblings().removeClass("calendar_day_act"); } }); 点击上方显示当前年份和的DOM部分可选择并跳转到指定年份和。 插件提供的方法: //获取第一天方法weekfirstdate(),传入年份和数 console.log(weekfn.weekfirstdate(2018,36)); //获取传入期为当年第几getweeknum(),传入年,,(注:这里的份从0开始) console.log(weekfn.getweeknum(2018,0,16)); //跳转到指定confirmweek(),传入年份和数 weekfn.confirmweek(getyear,getweek); //跳转到本nowweek() weekfn.nowweek();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wl_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值