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"
οnclick="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;"οnclick="WdatePicker({dateFmt:'yyyy-MM-dd', minDate:minDate(), maxDate:maxDate(), readOnly:true})" />
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页