控制每个月只能选最后一天

在项目中遇到了一个需求,在某种情况下日期只能选择每个月的最后一天:使用fish中的组件datetimepicker,具体代码如下:

setTime: function(){
	    var me =this;
        $("input[paramid='000001']").datetimepicker("destroy").datetimepicker({viewType:'date',todayBtn: false,format:"yyyy-mm-dd",
            //初始化当前月、上一月份、下一月份不是最后一天的都不可选
            show :function(e, value){
                //不可选的日期数组
                var disableArr1 = [];
                var now = new Date();
                if(value.date != null){
                    now = value.date;
                }
                var fullYear = now.getFullYear();
                var month = now.getMonth()+1; // getMonth 方法返回 0-11,代表1-12月
                //当月的不可选天
                me.setDisableDay(fullYear,month,0,disableArr1);
                //上一个不可选天
                me.setDisableDay(fullYear,month,-1,disableArr1);
                //下一个不可选天
                me.setDisableDay(fullYear,month,1,disableArr1);
                //下下个月不能选
                me.setDisableDay(fullYear,month,2,disableArr1);
                $("input[paramid='0000000008']").datetimepicker("setDatesDisabled", disableArr1);
            },
            // 月份改变的时候,当前月份、上一月份下一月份不是最后一天的都加入不可选
            changeMonth : function (e, value) {
                //不可选的日期数组
                var disableArr=[];
                var fullYear = value.date.getFullYear();
                var month = value.date.getMonth()+1; // getMonth 方法返回 0-11,代表1-12月
                var endOfMonth1 = new Date(fullYear, month, 0); // 获取本月最后一天
                //当月的不可选天
                me.setDisableDay(fullYear,month,0,disableArr);
                //上一个不可选天
                me.setDisableDay(fullYear,month,-1,disableArr);
                //下一个不可选天
                me.setDisableDay(fullYear,month,1,disableArr);
                $("input[paramid='000001']").datetimepicker("setDate", endOfMonth1);
                $("input[paramid='000001']").datetimepicker("setDatesDisabled", disableArr);

            },
            //选择日期,判断是否选择了开始时间,然后计算订购时长
            changeDate : function(e,value){
                //订购开始日期已选
                var startDate = $("input[paramid='000002']").val();
                var endDate = $("input[paramid='000001']").val();
                if(startDate == ''){
                    fish.warn("请先选择订购开始时间");
                    $("input[paramid='000001']").datetimepicker("hide");
                    $("input[paramid='000001']").val('');
                    return;
                }else if(endDate <= startDate ){
                    fish.warn("订购结束时间必须大于订购开始时间");
                    $("input[paramid='000001']").val('');
                    return;
                }
                //计算订购时长
                startDate = startDate.split('-');
                // 得到月数
                startDate = parseInt(startDate[0]) * 12 + parseInt(startDate[1]);
                // 拆分年月日
                endDate = endDate.split('-');
                // 得到月数
                endDate = parseInt(endDate[0]) * 12 + parseInt(endDate[1]);
                var times = Math.abs(startDate - endDate);
                $("input[paramid='0000003']").attr("value",times);
            },
        });
    },
    //设置某个月份不可选
    setDisableDay:function(fullYear,month,num,disableArray){
        //下下个月不能选
        var month = month+num;
        var endOfMonth;
        if(num > 0 && month==13){
            month=1;
            endOfMonth = new Date(fullYear+1, month, 0); // 获取本月最后一天
        }else if(num == -1 && month==12){
            month = 12;
            endOfMonth = new Date(fullYear-1, month2, 0); // 获取本月最后一天
        }else{
            endOfMonth = new Date(fullYear, month, 0); // 获取本月最后一天
        }
        if(month<10){
            month="0"+month;
        }
        for(var i=0;i< endOfMonth.getDate()-1;i++){
            var day ="";
            if((i+1)<10){
                day="0"+(i+1);
            }else{
                day=i+1;
            }
            disableArray.push(endOfMonth.getFullYear()+"-"+month+"-"+day);
        }
    }
}

以上代码就能控制日期只能选择每个月的最后一天

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值