簡易下拉框式日期選擇器(帶閏平年判斷)

    最近公司有個項目模塊需要一個定時發佈功能,對時間選擇方面無合適組件可用,翻資料文檔發現了一款幾年前用JS封裝的簡易型時間選擇器(帶閏平年判斷),感覺不錯,現分享希望對大家有用!

  1. <html> 
  2. <head> 
  3. <title>日期選擇類下拉框</title> 
  4. <meta http-equiv="content-type" content="text/html; charset=GBK"> 
  5. <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js" charset="GBK"></script> 
  6. </head> 
  7. <body> 
  8. <form name="form"> 
  9.   <input type="text" id="time_show"><br> 
  10.   <select id="time_year" onChange="javascript:YearDay(this.value);"></select> 
  11.   <select id="time_month" onChange="javascript:MonthDay(this.value);"></select> 
  12.   <select id="time_day" onChange="javascript:setTimeShow();"></select> 
  13.   <select id="time_hour" onChange="javascript:setTimeShow();"></select> 
  14.   <select id="time_minute" onChange="javascript:setTimeShow();"></select> 
  15.   <select id="time_second" onChange="javascript:setTimeShow();"></select> 
  16. </form> 
  17. <script type="text/javascript"> 
  18.     var TimeShow    =   $("#time_show");  
  19.     var TimeYear    =   $("#time_year");  
  20.     var TimeMonth   =   $("#time_month");  
  21.     var TimeDay     =   $("#time_day");  
  22.     var TimeHour    =   $("#time_hour");  
  23.     var TimeMinute  =   $("#time_minute");  
  24.     var TimeSecond  =   $("#time_second");  
  25.       
  26.     /*默認值*/  
  27.     var Year = null;  
  28.     var Month = null;  
  29.     var Day = null;  
  30.     var Hour = null;  
  31.     var Minute = null;  
  32.     var Second = null;  
  33.       
  34.     /*賦值格式*/  
  35.     function setTimeShow(){  
  36.         var time = TimeYear.val()+"-"+TimeMonth.val()+"-"+TimeDay.val()+" "+TimeHour.val()+":"+TimeMinute.val()+":"+TimeSecond.val();  
  37.         TimeShow.attr("value",time);  
  38.     }  
  39.       
  40. //以下內容可單獨保存調用  
  41. /***************  
  42.  * @ Name 日期選擇類 下拉框式  
  43.  * @ Version 1.0  
  44.  * @ Writer JSPGen  
  45.  * @ Time 2008年06月  
  46.  * @ Address www.jspgen.com  
  47.  * @ E-mail:[email protected]  QQ 190582560  
  48.  ***************/  
  49.     var NowTime = new Date();  
  50.     if(Year == null)      {   Year = NowTime.getFullYear();   }  
  51.     if(Month == null)     {   Month = NowTime.getMonth()+1;   }  
  52.     if(Day == null)       {   Day = NowTime.getDate();        }  
  53.     if(Hour == null)      {   Hour = NowTime.getHours();      }  
  54.     if(Minute == null)    {   Minute = NowTime.getMinutes();  }  
  55.     if(Second == null)    {   Second = NowTime.getSeconds();  }  
  56.     var MonthHead = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];  
  57.     var DayMax = MonthHead[Month-1];  
  58.       
  59.     /*寫年*/  
  60.     for (var i=Year; i <(Year+3); i++){  
  61.         if(i == Year){  
  62.             TimeYear.append("<option value=\"" +i+ "\" selected >" +i+ "年</option>");  
  63.         }else{  
  64.             TimeYear.append("<option value=\"" +i+ "\">" +i+ "年</option>");  
  65.         }  
  66.     }  
  67.     /*寫月*/  
  68.     for (var i = 1; i < 13; i++) {  
  69.         var m = i>9 ? i : "0"+i;  
  70.         if(m == Month){  
  71.             TimeMonth.append("<option value=\"" +m+ "\" selected >" +m+ "月</option>");  
  72.         }else{  
  73.             TimeMonth.append("<option value=\"" +m+ "\">" +m+ "月</option>");  
  74.         }  
  75.     }  
  76.     /*寫日*/  
  77.     if(Month==2 && isPinYear(Year)){DayMax++;}  setTimeDay(DayMax);  
  78.       
  79.     /*寫時*/  
  80.     for (var i = 0; i < 24; i++) {  
  81.         var v = i>9 ? i : "0"+i;  
  82.         if(v == Hour){  
  83.             TimeHour.append("<option value=\"" +v+ "\" selected >" +v+ "時</option>");  
  84.         }else{  
  85.             TimeHour.append("<option value=\"" +v+ "\">" +v+ "時</option>");  
  86.         }  
  87.     }  
  88.     /*寫分*/  
  89.     for (var i = 0; i < 60; i++) {  
  90.         var v = i>9 ? i : "0"+i;  
  91.         if(v == Minute){  
  92.             TimeMinute.append("<option value=\"" +v+ "\" selected >" +v+ "分</option>");  
  93.         }else{  
  94.             TimeMinute.append("<option value=\"" +v+ "\">" +v+ "分</option>");  
  95.         }  
  96.     }  
  97.     /*寫秒*/  
  98.     for (var i = 0; i < 60; i++) {  
  99.         var v = i>9 ? i : "0"+i;  
  100.         if(v == Second){  
  101.             TimeSecond.append("<option value=\"" +v+ "\" selected >" +v+ "秒</option>");  
  102.         }else{  
  103.             TimeSecond.append("<option value=\"" +v+ "\">" +v+ "秒</option>");  
  104.         }  
  105.     }  
  106.     setTimeShow();  
  107.       
  108.     /*年發生變化時日期發生變化(主要是判斷閏平年)*/  
  109.     function YearDay(value){  
  110.         var mvalue = TimeMonth.val();  
  111.         if (mvalue == "") { optionsClear(TimeDay);  return; }  
  112.           
  113.         var dvalue = MonthHead[mvalue-1];  
  114.         if (mvalue == 2 && isPinYear(value)) dvalue++;  
  115.         setTimeDay(dvalue);  
  116.     }  
  117.     /*月發生變化時日期聯動*/  
  118.     function MonthDay(value) {  
  119.         var yvalue = TimeYear.val();  
  120.         if (yvalue == "") { optionsClear(TimeDay);  return; }  
  121.           
  122.         var dvalue = MonthHead[value-1];  
  123.         if (value == 2 && isPinYear(yvalue)) dvalue++;  
  124.         setTimeDay(dvalue);  
  125.     }  
  126.     /*據條件寫日期*/  
  127.     function setTimeDay(dvalue){  
  128.         optionsClear(TimeDay);  
  129.         for (var i=1; i<(dvalue+1); i++){  
  130.             var d = i>9 ? i : "0"+i;  
  131.             if(d == Day){  
  132.                 TimeDay.append("<option value=\"" +d+ "\" selected >" +d+ "日</option>");  
  133.             }else{  
  134.                 TimeDay.append("<option value=\"" +d+ "\">" +d+ "日</option>");  
  135.             }  
  136.         }  
  137.         setTimeShow();  
  138.     }  
  139.       
  140.     /*  
  141.     //賦值  
  142.     function setTimeShow(){  
  143.         var time = TimeYear.val()+"-"+TimeMonth.val()+"-"+TimeDay.val()+" "+TimeHour.val()+":"+TimeMinute.val()+":"+TimeSecond.val();  
  144.         TimeShow.attr("value",time);  
  145.     }  
  146.     */  
  147.       
  148.     /*判斷是否閏平年*/  
  149.     function isPinYear(year){  
  150.         return (0 == year%4 && (year%100 != 0 || year%400 == 0));  
  151.     }  
  152.     /*清空下拉列表*/  
  153.     function optionsClear(o){o.empty();}  
  154. </script> 
  155. </body> 
  156. </html> 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章