怎么设置用户在日期控件里面只能选择月初或者月末?

怎么设置用户在日期控件里面只能选择月初或者月末?

FineReport 用户X7092250 发布于 2020-10-28 15:23
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
firegunzxLv6高级互助
发布于2020-10-28 15:23(编辑于 2020-10-28 15:52)

JS实现日期控件的可选日期范围-https://help.fanruan.com/finereport/doc-view-2018.html

或者把日期控件的表达式设成月份,让用户只能选整月,然后在sql里判断一下月份

image.png

image.png

image.png

  • 用户X7092250 用户X7092250(提问者) 是用户在日期控件例选择日期的时候只能选择月初或者月末
    2020-10-28 15:38 
  • firegunzx firegunzx 回复 用户X7092250(提问者) 是想实现查询整月数据还是要填报月初或者月末?查询整月的数据建议把日期控件改成月份,那样好处理。如果非要控制日期输入月初月末,就参照帮助文档写一下js
    2020-10-28 15:41 
  • 用户X7092250 用户X7092250(提问者) 要让被人在填报的时候只能选择月初月末
    2020-10-28 15:47 
  • firegunzx firegunzx 回复 用户X7092250(提问者) 参照JS实现日期控件的可选日期范围-https://help.fanruan.com/finereport/doc-view-2018.html,日期控件加一个初始化后事件
    2020-10-28 15:52 
最佳回答
0
shirokoLv6资深互助
发布于2020-10-28 15:54

两个控件,一个月份,一个选 末/初。

计算一下拼接处日期去查sql

最佳回答
0
孤陌Lv6资深互助
发布于2020-10-28 16:12(编辑于 2020-10-28 16:20)

this._createCalendar = function(){
        debugger;
        var o = this.options;
        var self = this;
        if (this.options.need2BuildConfig === true && this.options.data) {
                this.options.data.resetStatus(this.createDependencePara4Data());
                var data = this.options.data.getData();
                if (data[0].data) {
                        if (data[0].data.startDate) {
                                var sd = new Date(data[0].data.startDate);
                                if (!FR.isInvalidDate(sd)) {
                                        o.startDate = FR.date2Str(sd, 'yyyy-MM-dd');
                                        this.std = this._createStartDate(o.startDate, o.format, this.viewMode);
                                }
                        }
                        if (data[0].data.endDate) {
                                var ed = new Date(data[0].data.endDate);
                                if (!FR.isInvalidDate(ed)) {
                                        o.endDate = FR.date2Str(ed, 'yyyy-MM-dd');
                                        this.edd = this._createEndDate(o.endDate, o.format, this.viewMode);
                                }
                        }
                }
                this.options.rebuildConfig = false;
        }
        this.datepicker = new FR.DatePicker({
                renderEl: this.$view,
                viewMode: this.viewMode,
                date: FR.str2Date(this.editComp.val(), o.format),
                dateFormat: o.format,
                startDate: this.std,
                endDate: this.edd,
                onDateUpdate:function(){
                        if ($(':focus').length === 0) {
                                self.editComp.focus();
                        }
                        self.editComp.val(FR.date2Str(this.getValue(), o.format));
                        self.isValidateInput();
                        self.fireEvent(FR.Events.AFTEREDIT);
                }
        });

          this.datepicker._loadDateData = function (s, u) {
                  if (!u) {
            return
        }
        var g = u.getFullYear()
          , v = u.getMonth()
          , p = u.getDate();
        var t = new Date()
          , k = t.getFullYear()
          , w = t.getMonth()
          , a = t.getDate();
        this.cache.showYear = g;
        this.cache.showMonth = v;
        var x = this.options.startDate
          , r = this.options.endDate;
        s.$title.text(Date._MN[v] + ", " + g);
        var b = new Date(u);
        b.setDate(b.getMonthDays() + 1);
        if ((r && b > r) || b.getFullYear() > this.CONSTS.MAXYEAR) {
            s.$nextm.addClass("disabled").removeClass("hover").data("disabled", true)
        } else {
            s.$nextm.removeClass("disabled").data("disabled", false)
        }
        var o = new Date(u);
        o.setDate(0);
        if ((x && o < x) || o.getFullYear() < this.CONSTS.MINYEAR) {
            s.$prevm.addClass("disabled").removeClass("hover").data("disabled", true)
        } else {
            s.$prevm.removeClass("disabled").data("disabled", false)
        }
        u.setDate(1);
        var l = (u.getDay() - this.CONSTS.FIRSTDAY) % 7;
        u.setDate(0 - l);
        u.setDate(u.getDate() + 1);
        var m = s.find("tbody").children().eq(0);
        for (var q = 0; q < 6; q++) {
            if (!m.length) {
                break
            }
            var d = m.children().eq(0);
            d.addClass("week wn").text(u.getWeekNumber());
            var e;
            for (var n = 0; n < 7; ++n,
            u.setDate(e + 1)) {
                d = d.next();
                debugger;
                d.removeClass().data("nav", this.CONSTS.NAV["day"]);
                if (!d.length) {
                    break
                }
                e = u.getDate();
                d.text(e);
                var h = (u.getMonth() == v);
                if (!h) {
                    d.addClass("oday").data("disabled", true);
                    continue
                }
                var c = false;
                if ((x != null && x > u) || (r != null && r < u)) {
                    d.addClass("day disabled");
                    c = true
                } else {
                    d.addClass("day")
                }
                d.data("disabled", c);
                if (!c) {
                    if (h && e == p) {
                        this.cache.selectedDate && this.cache.selectedDate.removeClass("selected");
                        d.addClass("selected");
                        this.cache.selectedDate = d;
                        this.cache.showDay = e
                    }
                    if (u.getFullYear() == k && u.getMonth() == w && e == a) {
                        d.addClass("today")
                    }
                    var f = u.getDay();
                    if ([0, 6].indexOf(f) != -1) {
                        d.addClass("weekend")
                    }
                }
            }
            m = m.next()
        }
         var tr = $('tr',s.find("tbody"));
         for(var i=0;i<tr.length;i++){
                 var flag = true;
                var tds = $("td",tr.eq(i));
                for(var index=0;index<tds.length;index++){
                        if(tds.eq(index).hasClass("day")){
                                tds.eq(index).addClass('first');
                                flag = false;
                                break;
                        }
                }
                if(!flag) break;
        }

      for(var i=tr.length-1;i>=0;i--){
                 var flag = true;
                var tds = $("td",tr.eq(i));
                for(var index=tds.length-1;index>=0;index--){
                        if(tds.eq(index).hasClass("day")){
                                tds.eq(index).addClass('first');
                                flag = false;
                                break;
                        }
                }
                if(!flag) break;
        }

        for( var i=0; i<tr.length; i++ ){
                var $days = $('td[class!="week wn"]',tr);
                for( var j=0; j<$days.length; j++ ){
                        var $day = $($days[j]);
                        if($day.hasClass("first")==false){
                                 $day.data("disabled",true);
                                $day.attr('class','oday');
                        }
                       
                }
        }
             
    }

        
        if (FR.Browser.isIE8() && this.$view.css('visibility') == 'hidden') {
                this.$view.css("visibility", "visible");
        } else {
                this.$view.show();
        }
        $(document).bind('mousedown', this, this.collapseIf);
        this.modifyPosition();
        
        debugger

        var tr = $('tbody>tr',this.datepicker.$datetable);
         for(var i=0;i<tr.length;i++){
                 var flag = true;
                var tds = $("td",tr.eq(i));
                for(var index=0;index<tds.length;index++){
                        if(tds.eq(index).hasClass("day")){
                                tds.eq(index).addClass('first');
                                flag = false;
                                break;
                        }
                }
                if(!flag) break;
        }

      for(var i=tr.length-1;i>=0;i--){
                 var flag = true;
                var tds = $("td",tr.eq(i));
                for(var index=tds.length-1;index>=0;index--){
                        if(tds.eq(index).hasClass("day")){
                                tds.eq(index).addClass('first');
                                flag = false;
                                break;
                        }
                }
                if(!flag) break;
        }

        for( var i=0; i<tr.length; i++ ){
                var $days = $('td[class!="week wn"]',tr);
                for( var j=0; j<$days.length; j++ ){
                        var $day = $($days[j]);
                        if($day.hasClass("first")==false){
                                 $day.data("disabled",true);
                                $day.attr('class','oday');
                        }
                       
                }
        }
        
}



  • 用户Y4473151 用户Y4473151 请问这段如果只想要月末日期要怎么改呢?
    2022-06-23 10:54 
  • 4关注人数
  • 542浏览人数
  • 最后回答于:2020-10-28 16:20
    请选择关闭问题的原因
    确定 取消
    返回顶部