添加一个日历控件,日历控件只能选每个月的最后一天怎么设置

image.png

FineReport yzmxYDx35608993 发布于 2023-5-24 17:36 (编辑于 2023-5-25 08:55)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
runnerLv7资深互助
发布于2023-5-24 17:39(编辑于 2023-5-25 09:51)

日期控件只有每个月最后一天可以选要怎么设置呢? - 我的帆软 (fanruan.com)

参考

image.png

---------------------------------

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=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');

                        }

                       

                }

        }

        

}

--------------------------------

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=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=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');

                        }

                       

                }

        }

        

}

  • yzmxYDx35608993 yzmxYDx35608993(提问者) 哪个大哥的JS怎么改的啊
    2023-05-24 17:48 
  • runner runner 回复 yzmxYDx35608993(提问者) 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=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; itr\',this.datepicker.$datetable); 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
    2023-05-24 18:13 
  • yzmxYDx35608993 yzmxYDx35608993(提问者) 回复 runner 好像太长了,我只能看到部分
    2023-05-24 18:15 
  • runner runner 回复 yzmxYDx35608993(提问者) 横线往后的
    2023-05-24 18:17 
  • yzmxYDx35608993 yzmxYDx35608993(提问者) 回复 runner 大佬,好像有点问题,我预览看了下,换到6月份还是能选到1号,要重新进去日历控件1号才不可以选
    2023-05-25 08:54 
  • 2关注人数
  • 373浏览人数
  • 最后回答于:2023-5-25 09:51
    请选择关闭问题的原因
    确定 取消
    返回顶部