日期-用Datapicker实现前一天后一天
运用了JQuery UI Datepicker 插件和一些常用日期的方法。其中Datepicker的API具体可参考【http://api.jqueryui.com/datepicker/#option-dateFormat】
1 <!-- 2 需求:可选择包括今天及前三个月的日期 3 初始化显示当天的日期 4 点击前一天|后一天,日期自动向前|后跳转 5 --> 6 <!doctype html> 7 <html lang="en"> 8 <head> 9 <meta charset="utf-8"> 10 <title>jQuery UI Datepicker - Restrict date range</title> 11 <link rel="stylesheet" href="css/jquery.ui.all.css"> 12 <link rel="stylesheet" href="css/jquery.ui.datepicker.css"> 13 <link rel="stylesheet" href="css/jquery.ui.theme.css"> 14 <link rel="stylesheet" href="css/jquery-ui.css"> 15 <script src="js/jquery-1.10.2.js"></script> 16 <script src="js/jquery.ui.core.js"></script> 17 <script src="js/jquery.ui.widget.js"></script> 18 <script src="js/jquery.ui.datepicker.js"></script> 19 <link rel="stylesheet" href="css/test_datePicker.css"> 20 <style> 21 span{cursor:pointer;} 22 .disable{color:#999;} 23 </style> 24 <script> 25 $(function() { 26 var inputVal =""; 27 var mon = 3; 28 var date = new Date(); 29 var year,month,day=""; 30 31 //初始化显示当日日期 32 var year = date.getFullYear(); 33 var month = date.getMonth()+1;//返回Date对象的月份值,注意返回值在0(1月)~11(12月)之间 34 var day = date.getDate(); 35 if(month.toString().length<2){month = "0"+month;}//格式为一位数时补齐0 36 if(day.toString().length<2){day = "0"+day;} 37 var todayDate = year+"-"+month+"-"+day; 38 $("#datepicker").val(todayDate); 39 40 //绑定日期插件 41 $( "#datepicker" ).datepicker({dateFormat:"yy-mm-dd",changeMonth:true,changeYear:true,minDate:"-3m",maxDate:new Date()}); 42 43 //点击前一天 44 $(".preDate").click(function(){ 45 $(".nextDate").removeClass("disable"); 46 if($(this).hasClass("disable")){return;} 47 inputVal = $("#datepicker").val(); 48 var getYMD = getYYMMDD(inputVal); 49 year = parseInt(getYMD.yy,10); 50 month = parseInt(getYMD.mm,10); 51 day = parseInt(getYMD.dd,10); 52 53 var preDate,preDay=""; 54 if(month!=1 && day==1){//除1月份以外的某月1日 55 var premm = month-1; 56 var predays = new Date(year+"/"+month+"/0"); 57 preDay = predays.getDate(); 58 if(premm.toString().length<2){premm = "0"+premm;} 59 if(preDay.toString().length<2){preDay = "0"+preDay;} 60 preDate = year+"-"+premm+"-"+preDay; 61 } 62 else if(day!=1){//非1日 63 preDay = day-1; 64 if(month.toString().length<2){month = "0"+month;} 65 if(preDay.toString().length<2){preDay = "0"+preDay;} 66 preDate = year+"-"+month+"-"+preDay; 67 } 68 else{//1月1日 69 var preyy = year-1; 70 var predays = new Date(preyy+"/"+13+"/0"); 71 preDay = predays.getDate(); 72 if(preDay.toString().length<2){preDay = "0"+preDay;} 73 preDate = preyy+"-12-"+preDay; 74 } 75 76 $("#datepicker").val(preDate); 77 78 //判断前一天是否已到日期范围最小值 79 if(preDate == getMinDate(mon)){$(".preDate").addClass("disable");} 80 else{$(".preDate").removeClass("disable");} 81 }); 82 83 //点击后一天 84 $(".nextDate").click(function(){ 85 $(".preDate").removeClass("disable"); 86 if($(this).hasClass("disable")){return;} 87 inputVal = $("#datepicker").val(); 88 var getYMD = getYYMMDD(inputVal); 89 year = parseInt(getYMD.yy,10); 90 month = parseInt(getYMD.mm,10); 91 day = parseInt(getYMD.dd,10); 92 93 var nextDate,nextDay=""; 94 if(month==12&&day==31){//年末最后一天 95 var nextyy = year+1; 96 nextDate = nextyy+"-01-01"; 97 } 98 else{ 99 var nextmm = month+1; 100 var nextdays = new Date(year+"/"+nextmm+"/0"); 101 if(day==nextdays){//月末最后一天 102 if(nextmm.toString().length<2){nextmm = "0"+nextmm;} 103 nextDate = year+"-"+nextmm+"-01"; 104 } 105 else{ 106 nextDay = day+1; 107 if(nextDay.toString().length<2){nextDay = "0"+nextDay;} 108 if(month.toString().length<2){month = "0"+month;} 109 nextDate = year+"-"+month+"-"+nextDay; 110 } 111 } 112 113 $("#datepicker").val(nextDate); 114 115 if(nextDate == todayDate){$(".nextDate").addClass("disable")} 116 else{$(".nextDate").removeClass("disable");} 117 }); 118 119 }); 120 121 //返回input框中的年|月|日 122 function getYYMMDD(dateStr){ 123 var dPick = {yy:0,mm:0,dd:0} 124 dPick.yy = dateStr.substring(0,4); 125 dPick.mm = dateStr.substring(5,7); 126 dPick.dd = dateStr.substring(8,10); 127 return dPick; 128 } 129 130 //返回日期范围(3个月)的最小日期 131 function getMinDate(mon){ 132 var minDate=""; 133 var date = new Date(); 134 var year = date.getFullYear(); 135 var month = date.getMonth()+1-mon; 136 var day = date.getDate(); 137 if(month<=0){ 138 year-=1; 139 month+=12; 140 } 141 else if(day>28){ 142 if(month==2){ 143 if(year%400==0||(year%4==0&&year%100!=0)){day=29;} 144 else{day=28;} 145 } 146 else if((month==4||month==6||month==9||month==11)&&day=31){day=30;} 147 } 148 if(month.toString().length<2){month = "0"+month;} 149 if(day.toString().length<2){day = "0"+day;} 150 minDate = year+"-"+month+"-"+day; 151 return minDate; 152 } 153 </script> 154 </head> 155 <body> 156 157 <p>Date:<span class="preDate"><<前一天</span><input type="text" id="datepicker" readonly="readonly"><span class="nextDate disable">后一天>></span></p> 158 159 <div class="demo-description"> 160 <p></p> 161 </div> 162 </body> 163 </html>
结果如下图所示:


浙公网安备 33010602011771号