My97DatePicker使用js控制日期范围

解决IE下不兼容Date.toLocalString()和Date.parse()这两个方法,IE下js的日期格式必须是:月/日/年格式的字符串,才能进行Date.parse格式化并作Number运算,以下实现写法,兼容Firefox,IE,Google,Opera等主流浏览器

// js控制mydate97控件中日期的显示
    function maxDate(){
        var mindate = $("#startDate").val();// 系统中选择的最小日期
        var currentDate = new Date();// 当前日期
        var year = currentDate.getFullYear();// 当前年份
        var month = currentDate.getMonth() + 1;// 当前月份
        var day = currentDate.getDate();// 当前天数
      
        if(mindate == ""){ // 根据当前日期,获取前一天日期
            var d = new Date(Date.parse(currentDate) - (86400000 * 1));
            var mmonth = Number(d.getMonth()) + 1;
            return d.getFullYear() + "-" + mmonth + "-" + d.getDate();
        }
        // 最小日期不为空
        var mdate = mindate.split("-");
        mindate = mdate[1] + "/" + mdate[2] + "/" + mdate[0];// 转换日期字符串为兼容模式下的日期格式, 月/日/年
        var minMonth = "04|06|09|11";// 小月月份集合
        var februray = 28;// 平年的二月月份天数
        var daynum = 31; // 默认为大月份天数
        if(( mdate[0] % 4 == 0 && mdate[0] % 100 != 0 ) || mdate[0] % 400 == 0){
            februray = 29;// 闰年的二月的月份天数
        }
        if(mdate[0] == year && Number(mdate[1]) == month ){// 同年同月
            if(Number(mdate[2]) + 10 >= day){
                // 根据当前日期,获取前一天日期
                var d = new Date(Date.parse(currentDate) - (86400000 * 1));
                var mmonth = Number(d.getMonth()) + 1;
                return d.getFullYear() + "-" + mmonth + "-" + d.getDate();
            }else if(Number(mdate[2]) + 10 < day){
                // 根据系统选择的最小日期,获取9天后的日期
                var d = new Date(Date.parse(mindate) + (86400000 * 9));
                var mmonth = Number(d.getMonth()) + 1;
                return d.getFullYear() + "-" + mmonth + "-" + d.getDate();
            }
        }else if(mdate[0] == year && Number(mdate[1]) < month){// 同年不同月
            if(mdate[1].indexOf(minMonth) >= 0){
                daynum = 30;
            }else if(mdate[1] == "02"){
                daynum = februray; // 如果为2月份
            }
            // 最小日期加上10,小于该月的最大天数
            if( Number(mdate[2]) + 10 <= Number(daynum) || Number(mdate[1]) + 1 < month){
                // 根据系统选择的最小日期,获取9天后的日期
                var d = new Date(Date.parse(mindate) + (86400000 * 9));
                var mmonth = Number(d.getMonth()) + 1;
                return d.getFullYear() + "-" + mmonth + "-" + d.getDate();
            }
          
            // 与当前月份相邻
            if(Number(mdate[2]) + 10 > Number(daynum) && Number(mdate[1]) + 1 == month){
                var during = Number(mdate[2]) + 10 - Number(daynum);
                if(Number(during) >= day){
                    // 根据当前日期,获取前一天日期
                    var d = new Date(Date.parse(currentDate) - (86400000 * 1));
                    var mmonth = Number(d.getMonth()) + 1;
                    return d.getFullYear() + "-" + mmonth + "-" + d.getDate();
                }else if(Number(during) < day){
                    // 根据系统选择的最小日期,获取9天后的日期
                    var d = new Date(Date.parse(mindate) + (86400000 * 9));
                    var mmonth = Number(d.getMonth()) + 1;
                    return d.getFullYear() + "-" + mmonth + "-" + d.getDate();
                }
            }
        }else{
            // 根据系统选择的最小日期,获取9天后的日期
            var d = new Date(Date.parse(mindate) + (86400000 * 9));
            var mmonth = Number(d.getMonth()) + 1;
            return d.getFullYear() + "-" + mmonth + "-" + d.getDate();
        }
    }
    // 截止日期的最小日期
    function minDate(){
        var mindate = $("#startDate").val();// 系统中选择的最小日期
        return mindate;
    }

表单中控件引用
<input type="text" name="startDate" id="startDate"
onclick="WdatePicker({dateFmt:'yyyy-MM-dd', minDate:'#F{$dp.$D(\'endDate\',{d:-9})}', maxDate:'#F{$dp.$D(\'endDate\')}',readOnly:true})" />-
<input type="text" name="endDate" id="endDate" 
maxlength="10" style="width: 69px;"onclick="WdatePicker({dateFmt:'yyyy-MM-dd', minDate:minDate(), maxDate:maxDate(), readOnly:true})" />

你可能感兴趣的:(Datepicker,my97datepicker,my97date,mydate97,mydate)