自创双日历,方便扩展
思路很简单
1、先获取当前时间,最好由服务器提供。
var nowdate=new Date();//当前时间 建议开发提供服务器时间
2、根据当前时间,得到本月第一天,下月第一天,下下月第一天,反推获取本月最后一天,下月最后一天,遍历生成日历,日历的每一天上,赋值给当天的时间值,这样方便后期使用
var objdata=new Date(nowdate.getFullYear(),nowdate.getMonth()+dataval.datenum);
var tmfirst=new Date(objdata.getFullYear(),objdata.getMonth(),1);//本月第一天
var nmfirst=new Date(objdata.getFullYear(),objdata.getMonth()+1,1);//下月第一天
var anmfirst=new Date(objdata.getFullYear(),objdata.getMonth()+2,1);//下下月第一天
var tmlast=new Date(nmfirst-dataval.oneDay);//本月最后一天
var nmlast=new Date(anmfirst-dataval.oneDay);//下月最后一天
3、日历的弹出和隐藏,用到了div的获取焦点和失去焦点事件,给div加上tabindex,css里面讲此div的outline设置为none,这样此div就有了focus和blur事件
<div class="timedate" tabindex="1"></div>
//弹出框获取和失去焦点
$(".timedate").focus(function(){
$(this).show();
});
$(".timedate").blur(function(){
$(this).hide();
});
4、时间的比较,用到了Date.parse方法,用来做比较使用
if(Date.parse(todayinfo)<Date.parse(dataval.today)){//小于今天的变灰
zj.addClass("timehui");
}else if(Date.parse(todayinfo) == Date.parse(dataval.begin)){//开始时间高亮
zj.addClass("timeon");
};
5、给input框赋值方法函数
function getdateval(id,obj){//给input赋值
var mon,day;
if(obj.getMonth()<9){
mon="0"+(obj.getMonth()+1);
}else{
mon=obj.getMonth()+1;
};
if(obj.getDate()<10){
day="0"+obj.getDate();
}else{
day=obj.getDate();
};
id.val(obj.getFullYear()+"/"+mon+"/"+day+" "+dataval.week[obj.getDay()].name);
};
6、详情请下载附件代码