自创双日历,方便扩展

思路很简单

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、详情请下载附件代码

点击下载

posted @ 2017-02-21 09:24  txfling  阅读(221)  评论(0编辑  收藏  举报