实现my97DatePicker/WdatePicker 的周日历

最终效果如下:开始日期与结束日期最小间隔一周,最大间隔30周,开始日期结束日期都在当前周之前,且从周一至周日算为一整周,现在是周二

默认日历的第一天是从周日开始的,需要在配置项加入firstDayOfWeek:1,使开始的一周从星期一开始计算

image.png
image.png
        // 周历开始时间 配置项
        function beginWeek(begin, end) {
          // 获取当天时间 周几
          var now = new Date(); 
          var curday = 7 - now.getDay(); // 7 - 当前周几
          WdatePicker({
            onpicked:function() {
              // 设置了一个隐藏的input存 年-月-日信息,供结束日期使用
              $('#' + begin + 'hidden').val($dp.cal.getP('y')+'-'+$dp.cal.getP('M')+'-'+$dp.cal.getP('d'))
              // 设置显示的值 2018/10
              $dp.$(begin).value=$dp.cal.getP('y')+'-'+$dp.cal.getP('W','WW');
            },
            isShowWeek:'true',errDealMode:3,
            minDate:'%y-%M-{%d-210}', // 最小时间 当前时间-210天
            maxDate:'%y-%M-{%d-14+'+ curday +'}', // 最大时间 当前时间-14天再减去当前的周几数目,使高亮在周日那天
          });
        }

        // 周历结束时间 配置项
        function endWeek(begin, end) {
          // 获取当天时间 周几
          var now = new Date(); 
          var curday = now.getDay(); // 当前周几

          // 获取开始时间,后面拼接字符串是随意写的,为了获取时间戳
          var now = $('#beginDateWeekhidden').val() + ' ' +  '18:55:49:123'
          var nowTi = new Date(now)
          var nowTime = new Date(now).getTime(); // 获取当前时间戳
          var day = 7- nowTi.getDay() // 7 - 开始时间选择的周几
          // 选择周日时候可能会出现0的状态,这里处理一下
          day === 7 ? day = 0 : void 0
          WdatePicker(
          {onpicked:function(){ 
                $dp.$(end).value=$dp.cal.getP('y')+'-'+$dp.cal.getP('W','WW');
            },
            isShowWeek:'true',errDealMode:3,
            // 最小时间从周一开始
            minDate:'#F{$dp.$D(\'beginDateWeekhidden\',{d:1+'+ day +'})}',
            // 最大时间到周日
            maxDate:'%y-%M-{%d-'+curday +'}',                        
          });
        }
<input id="beginDateWeek" name="beginDate" id="beginDate" type="text" readonly="readonly"
                    value="${beginDate}" maxlength="20" class="input-mini Wdate"
                    onclick="beginWeek('beginDateWeek','endDateWeek');"
                />
                <input id="beginDateWeekhidden" type="hidden" value=""/>
                -
                <input id="endDateWeek" name="endDate" id="endDate" type="text" value="${endDate}" readonly="readonly"
                    maxlength="20" class="input-mini Wdate" value="${beginDate.endDate}"
                    data-option='{"dateFmt":"yyyy-MM-dd","isShowWeek":"true"}'
                    onclick="endWeek('beginDateWeek','endDateWeek');"
                />

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,864评论 6 13
  • 最近想法有些改变了,有的问题大概应该是这样的。 1、以前总觉得要把证据准备好再给法官看,觉得法官只会看证据,但是事...
    一步的塔罗阅读 3,405评论 0 52
  • 七个命令让你成为CAD高手 一、绘制基本图形对象 1、几个基本常用的命令 1.1、鼠标操作 通常情况下左键代表选择...
    南屋阿米佛头阅读 5,193评论 1 16