首页 > 编程 > JavaScript > 正文

jQuery简单实现日历的方法

2019-11-20 12:33:40
字体:
来源:转载
供稿:网友

本文实例讲述了jQuery简单实现日历的方法。分享给大家供大家参考。具体分析如下:

原理挺简单的,首先算出一个月有多少天,再算出这个月的第一天是星期几,接着顺序排下来就可以了.

<!DOCTYPE HTML><html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" /><meta name="format-detection" content="telephone=no" /><title>tryMyOwnCalendar</title><script src="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%;}.caltline1 p,.caltline2 p{ float:left; width:10%; font-weight:700; text-align:right;}.caltline1 .bookdate{ width:90%; text-align:left;}.caltline2{ background-color:#FFF; display:none;}.caltline2 p{ width:20%;}.caltline2 .datetext{ width:35%; border:1px solid #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:5px 5px 0 0;}.selectmouth p{ 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:1px solid #cccccc;border-collapse:collapse; }.data_table thead{ background-color:#333;}.data_table thead td{ color:#FFF; text-align:center;border:1px solid #333;border-collapse:collapse; padding:1% 0;}.data_table tbody td{border:1px solid #cccccc;border-collapse:collapse;text-align:center;color:#0C6;padding:1% 0;}.data_table tbody td.orderdate{ color:#000;}.data_table tbody td.tdselect{ color:#fff;background-color:#999}</style></head><body> <div class="choosecal"> <div class="ccaltop">  <div class="caltline1">  <p class="bookdate">选择入住日期……</p>  <p><img src="images/next.png" /></p>  </div>  <div class="caltline2">  <p style=" width:80%; text-align:left;">   <input type="text" value="" class="datetext datetoday inputdate" readonly=readonly />   至   <input type="text" value="" class="datetext dateendday" readonly=readonly />  </p>  <p><input type="button" value="确定" class="btsure" /></p>  </div> </div> <div class="calender">  <div class="selectmouth">  <p style="text-align:right" class="lastmonth"><</p>  <p><input type="text" class="selectdate" value="2014年2月" readonly=readonly /></p>  <p class="nextmonth">></p>  </div>  <table class="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(){ var mydate=new Date(); var thisyear=mydate.getFullYear(); var thismonth=mydate.getMonth()+1; var thisday=mydate.getDate(); var mydate1=new Date(); var thisyear1=mydate1.getFullYear(); var thismonth1=mydate1.getMonth()+1; var thisday1=mydate1.getDate(); var selectday=thisday;  //标记日期 var indate=thisday;  //入住日期 var inmonth=thismonth;  //入住月份 var outdate=thisday+1;  //退房日期 var outmonth=thismonth;  //退房月份 var datetxt="datetoday";   var datefirst; var datesecond; function initdata(){  //日期初始填充 var tdheight=jQuery(".data_table tbody tr").eq(0).find("td").height(); jQuery(".data_table tbody td").css("height",tdheight); jQuery(".selectdate").val(thisyear+"年"+thismonth+"月"); var days=getdaysinonemonth(thisyear,thismonth); var weekday=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)); function orderabledate(thisyear,thismonth,thisday){    //能预订的日期 if(thisyear<thisyear1){ jQuery(".data_table tbody td").addClass("orderdate"); jQuery(".data_table tbody td").removeClass("usedate"); }else if(thisyear==thisyear1){ if(thismonth<thismonth1){ jQuery(".data_table tbody td").addClass("orderdate"); jQuery(".data_table tbody td").removeClass("usedate"); }else if(thismonth==thismonth1){ for(var j=0;j<6;j++){ for(var i=0;i<7;i++){ var tdhtml=jQuery(".data_table tbody tr").eq(j).find("td").eq(i).html(); if(tdhtml<thisday){  jQuery(".data_table tbody tr").eq(j).find("td").eq(i).addClass("orderdate");  jQuery(".data_table tbody tr").eq(j).find("td").eq(i).removeClass("usedate"); }else{  jQuery(".data_table tbody tr").eq(j).find("td").eq(i).removeClass("orderdate"); } } } }else{ jQuery(".data_table tbody td").removeClass("orderdate"); } }else{ jQuery(".data_table tbody td").removeClass("orderdate"); } } function markdate(thisyear,thismonth,thisday){    //标记日期 var datetxt=thisyear+"年"+thismonth+"月"; var thisdatetxt=thisyear1+"年"+thismonth1+"月"; jQuery(".data_table td").removeClass("tdselect"); if(datetxt==thisdatetxt){ for(var j=0;j<6;j++){ for(var i=0;i<7;i++){ var tdhtml=jQuery(".data_table tbody tr").eq(j).find("td").eq(i).html(); if(tdhtml==thisday){ jQuery(".data_table tbody tr").eq(j).find("td").eq(i).addClass("tdselect"); } } } } } function getdaysinonemonth(year,month){  //算某个月的总天数 month=parseInt(month,10); var d=new Date(year,month,0); return d.getDate(); } function getfirstday(year,month){  //算某个月的第一天是星期几 month=month-1; var d=new Date(year,month,1); return d.getDay(); } function setcalender(days,weekday){  //往日历中填入日期 var a=1; for(var j=0;j<6;j++){ for(var i=0;i<7;i++){ if(j==0&&i<weekday){ jQuery(".data_table tbody tr").eq(0).find("td").eq(i).html(""); jQuery(".data_table tbody tr").eq(0).find("td").eq(i).removeClass("usedate"); }else{ if(a<=days){ jQuery(".data_table tbody tr").eq(j).find("td").eq(i).html(a); jQuery(".data_table tbody tr").eq(j).find("td").eq(i).addClass("usedate"); a++; }else{ jQuery(".data_table tbody tr").eq(j).find("td").eq(i).html(""); jQuery(".data_table tbody tr").eq(j).find("td").eq(i).removeClass("usedate"); a=days+1; } } } } } function errorreset(){  //日期报错后,数据重置 thisyear=thisyear1; thismonth=thismonth1; thisday=thisday1; selectday=thisday1; indate=thisday1; inmonth=thismonth1; outdate=thisday1+1; outmonth=thismonth1; initdata(); } jQuery(".data_table tbody td.usedate").live("click",function(){ //点击日期的效果 var thishtml=parseInt(jQuery(this).html()); jQuery(".data_table td").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(); }else if(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(){  //确定日期 var start = new Date($(".datetoday").val());  var end = new Date($(".dateendday").val());  var diff = 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程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表