今天是:"+today.getFullYear()+"年"+(today.getMonth()+1)+"月"+today.getDate()+"日 |
");}
//返回table对象
return table;
}
//显示日期选择框(点击元素、日期框对象、选中日期)
function loadDate(element,jdate,chosendate){
//清空日期框原有的日期,取消绑定,移除样式,移除title属性
var td=jQuery("tbody td",jdate).off().empty().removeClass().removeAttr("title");
//取出当前需要装载的年份和月份,月份0表示一月,1表示二月,以此类推
var y=jQuery("select[name='year']",jdate).val();
var m=jQuery("select[name='month']",jdate).val();
//当月第一天
var d=new Date(y,m,1);
//当月第一天是星期几?0表示星期日,1表示星期一,以此类推
var startindex=d.getDay();
//当月总共有多少天?
var numdays=monthlengths[m];
//考虑闰年情况
if(m==1&&((y%4==0&&y%100!=0)||y%400==0)){numdays=29;}
//显示所有行,有的月份没有最后一行被隐藏了
jQuery("tr",jdate).show();
//把日期数字填充到td中,i表示从1开始的日期
for(var i=1;i<=numdays;i++){
var cell=td.eq(i+startindex-1).text(i).addClass("date");
//当前td的日期
var date=new Date(y,m,cell.text());
//当前td的字符串格式
var datestring=getTheString(date);
//检测日期范围
if(date>=opts.startdate&&date<=opts.enddate){
cell
.attr("title",datestring)
.hover(function(){jQuery(this).addClass("over");},function(){jQuery(this).removeClass("over");})
.on("click",function(){closeIt(element,jdate,jQuery(this).attr("title"));});
//高亮初始状态即选中的日期
if(datestring==getTheString(chosendate)){cell.addClass("chosen");}
}
else{cell.addClass("disabled");}
}
//今日
if(opts.showtoday){
var cell=jQuery("tfoot>tr>td",jdate);
if(today>=opts.startdate&&today<=opts.enddate){
cell
.hover(function(){jQuery(this).addClass("over");},function(){jQuery(this).removeClass("over");})
.on("click",function(){closeIt(element,jdate,getTheString(today));});
}
else{cell.addClass("disabled");}
}
//如果最后有空行则隐藏
if(jQuery("tbody>tr:last>td",jdate).text()==""){jQuery("tbody>tr:last",jdate).hide();}
}
//关闭日期框
function closeIt(element,jdate,datestring){
jQuery(element).val(datestring);
jdate.remove();
jdate=null;
jQuery.data(element,"jdate",{hasjdate:false});
}
//根据日期字符串得到日期格式数据
function getTheDate(str){
//把日期中的斜杠替换为短横
var str=str.replace(/\//g,"-").split("-");
//月份前面有0则去掉
return (new Date(str[0],str[1]*1-1,str[2]));
}
//根据日期格式得到字符串
function getTheString(date){
return (date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate());
}
//计算时间范围
function getRange(){
//开始
if(opts.startdate.constructor==Date){opts.startdate=new Date(opts.startdate.getFullYear(),opts.startdate.getMonth(),opts.startdate.getDate());}
else if(yearRegEx.test(opts.startdate)){opts.startdate=new Date(opts.startdate,0,1);}
else if(dateRegEx.test(opts.startdate)){opts.startdate=getTheDate(opts.startdate);}
else{opts.startdate=today;}
//结束
if(opts.enddate.constructor==Date){opts.enddate=new Date(opts.enddate.getFullYear(),opts.enddate.getMonth(),opts.enddate.getDate());}
else if(yearRegEx.test(opts.enddate)){opts.enddate=new Date(opts.enddate,11,31);}
else if(dateRegEx.test(opts.enddate)){opts.enddate=getTheDate(opts.enddate);}
else{opts.enddate=today;}
//检测范围是否合法
if(opts.startdate>opts.enddate){alert("对不起,绑定jDate插件时日期范围设置错误!");return false;}
}
//调试
function debug(str){
if(jQuery("#debug").size()==0){$("body").prepend("