jQuery简单实现日历的方法
本文实例讲述了jQuery简单实现日历的方法。分享给大家供大家参考。具体分析如下:
原理挺简单的,首先算出一个月有多少天,再算出这个月的第一天是星期几,接着顺序排下来就可以了.
<!DOCTYPEHTML>
<htmllang="zh-CN">
<head>
<metacharset="utf-8">
<metaname="viewport"content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0;"/>
<metaname="format-detection"content="telephone=no"/>
<title>tryMyOwnCalendar</title>
<scriptsrc="js/jquery.min.js"language="javascript"></script>
<style>
*{margin:0;padding:0;}
.choosecal{width:96%;margin:3%auto;overflow:hidden;}
.ccaltop{width:100%;border-radius:5px;}
.caltline1,.caltline2{width:94%;background-color:#F90;overflow:hidden;padding:2%3%;}
.caltline1p,.caltline2p{float:left;width:10%;font-weight:700;text-align:right;}
.caltline1.bookdate{width:90%;text-align:left;}
.caltline2{background-color:#FFF;display:none;}
.caltline2p{width:20%;}
.caltline2.datetext{width:35%;border:1pxsolid#000;
background-color:#FFF;font-weight:700;}
.inputdate{color:#F60;}
.calender{width:100%;margin-top:3%;overflow:hidden;display:none;}
.selectmouth{background-color:#F30;width:94%;
overflow:hidden;padding:2%3%;border-radius:5px5px00;}
.selectmouthp{float:left;width:33%;color:#FFF;
font-weight:700;cursor:pointer;}
.selectmouth.selectdate{width:100%;background-color:#F30;
border:none;color:#FFF;font-weight:700;text-align:center;}
.data_table{width:100%;border:1pxsolid#cccccc;
border-collapse:collapse;}
.data_tablethead{background-color:#333;}
.data_tabletheadtd{color:#FFF;text-align:center;
border:1pxsolid#333;border-collapse:collapse;padding:1%0;
}
.data_tabletbodytd{border:1pxsolid#cccccc;
border-collapse:collapse;
text-align:center;color:#0C6;padding:1%0;
}
.data_tabletbodytd.orderdate{color:#000;}
.data_tabletbodytd.tdselect{color:#fff;background-color:#999}
</style>
</head>
<body>
<divclass="choosecal">
<divclass="ccaltop">
<divclass="caltline1">
<pclass="bookdate">选择入住日期……</p>
<p><imgsrc="images/next.png"/></p>
</div>
<divclass="caltline2">
<pstyle="width:80%;text-align:left;">
<inputtype="text"value=""
class="datetextdatetodayinputdate"readonly=readonly/>
至
<inputtype="text"value=""class="datetextdateendday"
readonly=readonly/>
</p>
<p><inputtype="button"value="确定"class="btsure"/></p>
</div>
</div>
<divclass="calender">
<divclass="selectmouth">
<pstyle="text-align:right"class="lastmonth"><</p>
<p><inputtype="text"class="selectdate"value="2014年2月"readonly=readonly/></p>
<pclass="nextmonth">></p>
</div>
<tableclass="data_table"cellspacing="0px">
<thead>
<tr>
<td>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td>
</tr>
</thead>
<tbody>
<tr>
<td>1</td><td></td><td></td><td></td><td></td><td></td><td></td>
</tr>
<tr>
<td>1</td><td></td><td></td><td></td><td></td><td></td><td></td>
</tr>
<tr>
<td>1</td><td></td><td></td><td></td><td></td><td></td><td></td>
</tr>
<tr>
<td>1</td><td></td><td></td><td></td><td></td><td></td><td></td>
</tr>
<tr>
<td>1</td><td></td><td></td><td></td><td></td><td></td><td></td>
</tr>
<tr>
<td>1</td><td></td><td></td><td></td><td></td><td></td><td></td>
</tr>
</tbody>
</table>
</div>
</div>
<script>
window.onload=function(){
varmydate=newDate();
varthisyear=mydate.getFullYear();
varthismonth=mydate.getMonth()+1;
varthisday=mydate.getDate();
varmydate1=newDate();
varthisyear1=mydate1.getFullYear();
varthismonth1=mydate1.getMonth()+1;
varthisday1=mydate1.getDate();
varselectday=thisday;
//标记日期
varindate=thisday;
//入住日期
varinmonth=thismonth;
//入住月份
varoutdate=thisday+1;
//退房日期
varoutmonth=thismonth;
//退房月份
vardatetxt="datetoday";
vardatefirst;
vardatesecond;
functioninitdata(){
//日期初始填充
vartdheight=jQuery(".data_tabletbodytr").eq(0).find("td").height();
jQuery(".data_tabletbodytd").css("height",tdheight);
jQuery(".selectdate").val(thisyear+"年"+thismonth+"月");
vardays=getdaysinonemonth(thisyear,thismonth);
varweekday=getfirstday(thisyear,thismonth);
setcalender(days,weekday);
markdate(thisyear,thismonth,selectday);
orderabledate(thisyear,thismonth,thisday);
}
initdata();
jQuery(".datetoday").val(thisyear+"-"+thismonth+"-"+thisday);
jQuery(".dateendday").val(thisyear+"-"+thismonth+"-"+(thisday+1));
functionorderabledate(thisyear,thismonth,thisday){
//能预订的日期
if(thisyear<thisyear1){
jQuery(".data_tabletbodytd").addClass("orderdate");
jQuery(".data_tabletbodytd").removeClass("usedate");
}elseif(thisyear==thisyear1){
if(thismonth<thismonth1){
jQuery(".data_tabletbodytd").addClass("orderdate");
jQuery(".data_tabletbodytd").removeClass("usedate");
}elseif(thismonth==thismonth1){
for(varj=0;j<6;j++){
for(vari=0;i<7;i++){
vartdhtml=jQuery(".data_tabletbodytr").eq(j).find("td").eq(i).html();
if(tdhtml<thisday){
jQuery(".data_tabletbodytr").eq(j).find("td").eq(i).addClass("orderdate");
jQuery(".data_tabletbodytr").eq(j).find("td").eq(i).removeClass("usedate");
}else{
jQuery(".data_tabletbodytr").eq(j).find("td").eq(i).removeClass("orderdate");
}
}
}
}else{
jQuery(".data_tabletbodytd").removeClass("orderdate");
}
}else{
jQuery(".data_tabletbodytd").removeClass("orderdate");
}
}
functionmarkdate(thisyear,thismonth,thisday){
//标记日期
vardatetxt=thisyear+"年"+thismonth+"月";
varthisdatetxt=thisyear1+"年"+thismonth1+"月";
jQuery(".data_tabletd").removeClass("tdselect");
if(datetxt==thisdatetxt){
for(varj=0;j<6;j++){
for(vari=0;i<7;i++){
vartdhtml=jQuery(".data_tabletbodytr").eq(j).find("td").eq(i).html();
if(tdhtml==thisday){
jQuery(".data_tabletbodytr").eq(j).find("td").eq(i).addClass("tdselect");
}
}
}
}
}
functiongetdaysinonemonth(year,month){
//算某个月的总天数
month=parseInt(month,10);
vard=newDate(year,month,0);
returnd.getDate();
}
functiongetfirstday(year,month){
//算某个月的第一天是星期几
month=month-1;
vard=newDate(year,month,1);
returnd.getDay();
}
functionsetcalender(days,weekday){
//往日历中填入日期
vara=1;
for(varj=0;j<6;j++){
for(vari=0;i<7;i++){
if(j==0&&i<weekday){
jQuery(".data_tabletbodytr").eq(0).find("td").eq(i).html("");
jQuery(".data_tabletbodytr").eq(0).find("td").eq(i).removeClass("usedate");
}else{
if(a<=days){
jQuery(".data_tabletbodytr").eq(j).find("td").eq(i).html(a);
jQuery(".data_tabletbodytr").eq(j).find("td").eq(i).addClass("usedate");
a++;
}else{
jQuery(".data_tabletbodytr").eq(j).find("td").eq(i).html("");
jQuery(".data_tabletbodytr").eq(j).find("td").eq(i).removeClass("usedate");
a=days+1;
}
}
}
}
}
functionerrorreset(){
//日期报错后,数据重置
thisyear=thisyear1;
thismonth=thismonth1;
thisday=thisday1;
selectday=thisday1;
indate=thisday1;
inmonth=thismonth1;
outdate=thisday1+1;
outmonth=thismonth1;
initdata();
}
jQuery(".data_tabletbodytd.usedate").live("click",function(){//点击日期的效果
varthishtml=parseInt(jQuery(this).html());
jQuery(".data_tabletd").removeClass("tdselect");
jQuery(this).addClass("tdselect");
selectday=thishtml;
if(datetxt=="datetoday"){
jQuery(".datetoday").val(thisyear+"-"+thismonth+"-"+selectday);
indate=selectday;
inmonth=thismonth;
}else{
jQuery(".dateendday").val(thisyear+"-"+thismonth+"-"+selectday);
outdate=selectday;
outmonth=thismonth;
if(outmonth<inmonth){
alert("日期填写错误");
jQuery(".datetoday").val(thisyear1+"-"+thismonth1+"-"+thisday1);
jQuery(".dateendday").val(thisyear1+"-"+thismonth1+"-"+(thisday1+1));
errorreset();
}elseif(outmonth==inmonth){
if(outdate<=indate){
alert("日期填写错误");
jQuery(".datetoday").val(thisyear1+"-"+thismonth1+"-"+thisday1);
jQuery(".dateendday").val(thisyear1+"-"+thismonth1+"-"+(thisday1+1));
errorreset();
}
}
}
});
jQuery(".datetoday").click(function(){
//选择入住日期
datetxt="datetoday";
jQuery(".datetext").removeClass("inputdate");
jQuery(this).addClass("inputdate");
});
jQuery(".dateendday").click(function(){
//选择退房日期
datetxt="dateendday";
jQuery(".datetext").removeClass("inputdate");
jQuery(this).addClass("inputdate");
});
jQuery(".lastmonth").click(function(){
//上一个月
thismonth--;
if(thismonth==0){
thismonth=12;
thisyear--;
}
initdata();
});
jQuery(".nextmonth").click(function(){
//上一个月
thismonth++;
if(thismonth==13){
thismonth=1;
thisyear++;
}
initdata();
});
jQuery(".btsure").click(function(){
//确定日期
varstart=newDate($(".datetoday").val());
varend=newDate($(".dateendday").val());
vardiff=parseInt((end-start)/(1000*3600*24));
jQuery(".bookdate").html(inmonth+"月"+indate+"日至"+outmonth+"月"+outdate+"日("+diff+")晚")
});
jQuery(".caltline1").toggle(
function(){
jQuery(".caltline2").slideDown(500);
jQuery(".calender").fadeIn(500);
errorreset();
jQuery(".caltline1").find("img").attr("src","images/iconpointup.png");
},
function(){
jQuery(".caltline2").slideUp(500);
jQuery(".calender").fadeOut(500);
jQuery(".caltline1").find("img").attr("src","images/iconpoint.png");
}
);
}
</script>
</body>
</html>
希望本文所述对大家的jQuery程序设计有所帮助。