DateSelect.js
上传用户:yunfeng252
上传日期:2022-07-23
资源大小:12403k
文件大小:10k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. <!--
  2. //有效的时间范围 
  3. var date_start,date_end,g_object
  4. var today = new Date();
  5. var separator="-";
  6. var inover=false;
  7. //mode :时间变换的类型0-年 1-月 2-直接选择月
  8. function change_date(temp,mode)
  9. {
  10. var t_month,t_year
  11.     if (mode){
  12.         if(mode==1)
  13.         t_month=parseInt(cele_date_month.value,10)+parseInt(temp,10);
  14.         else
  15.         t_month=parseInt(temp)
  16.         if (t_month<cele_date_month.options(0).text) {
  17.             cele_date_month.value=cele_date_month.options(cele_date_month.length-1).text;
  18.             change_date(parseInt(cele_date_year.value,10)-1,0);
  19.             }
  20.         else{
  21.             if (t_month>cele_date_month.options(cele_date_month.length-1).text){
  22.                 cele_date_month.value=cele_date_month.options(0).text;
  23.                 change_date(parseInt(cele_date_year.value,10)+1,0);
  24.                 }            
  25.             else
  26.                 {cele_date_month.value=t_month;
  27.                  set_cele_date(cele_date_year.value,cele_date_month.value);                
  28.                 }
  29.         }
  30.     }  
  31.     else{
  32.         t_year=parseInt(temp,10);
  33.         
  34.         if (t_year<cele_date_year.options(0).text) {
  35.             cele_date_year.value=cele_date_year.options(0).text;
  36.             set_cele_date(cele_date_year.value,1);                
  37.             }
  38.         else{
  39.             if (parseInt(t_year,10)>parseInt(cele_date_year.options(cele_date_year.length-1).text,10)){
  40.                 cele_date_year.value=cele_date_year.options(cele_date_year.length-1).text;
  41.                 set_cele_date(cele_date_year.value,12);                
  42.                 }            
  43.             else
  44.                 {cele_date_year.value=t_year;
  45.                  set_cele_date(cele_date_year.value,cele_date_month.value);                
  46.                 }
  47.         }
  48.     }
  49.     window.cele_date.focus();
  50.     /****************MODIFY END***********************/
  51. }
  52. //初始化日历
  53. function init(d_start,d_end)
  54. {
  55.      var temp_str;
  56.      var i=0
  57.      var j=0
  58.      date_start=new Date(2000,7,1)
  59.      date_end=new Date(2004,8,1)
  60.      
  61.      document.write("<div name="cele_date" id="cele_date" style="display:none" style="LEFT:69px;POSITION:absolute;TOP:159px;Z-INDEX:99" onClick="event.cancelBubble=true;" onBlur="hilayer()" onMouseout="lostlayerfocus()"></div>");
  62.      window.cele_date.innerHTML="";
  63.      temp_str="<table border="1" bgcolor="#CEEFE7" bordercolor="#9FDFCF"><tr><td colspan=7 onmouseover="overcolor(this)">";
  64.      //temp_str+="<input type="Button" value="<<" onclick="change_date(-1,1)" onmouseover="getlayerfocus()" style="color:#FFFFFF;background-color:#5d7790;cursor:hand">";//左面的箭头
  65.      /*temp_str+="<input type="Button" value="<<" onclick="change_date(-1,1)" >";  //左面的箭头                                */
  66.      
  67.      temp_str+=""  //年
  68.      temp_str+="<select name="cele_date_year" id="cele_date_year" language="javascript" onchange="change_date(this.value,0)" onmouseover="getlayerfocus()" onblur="getlayerfocus()" style="font-size:12px;border:1px #666666 outset;background-color:#F4F8FB">"
  69.      /*temp_str+="<select name="cele_date_year" id="cele_date_year" language="javascript" onchange="change_date(this.value,0)">" */
  70.      
  71.      for (i=2000;i<=2020;i++)
  72.      {
  73.      temp_str+="<OPTION value=""+i.toString()+"">"+i.toString()+"</OPTION>";
  74.      }
  75.      temp_str+="</select>";
  76.      temp_str+=""  //月
  77.      temp_str+="<select name="cele_date_month" id="cele_date_month" language="javascript" onchange="change_date(this.value,2)" onmouseover="getlayerfocus()" onblur="getlayerfocus()" style="font-size:12px;border:1px #666666 outset;background-color:#F4F8FB">"
  78.      /*temp_str+="<select name="cele_date_month" id="cele_date_month" language="javascript" onchange="change_date(this.value,2)">" */
  79.      
  80.      for (i=1;i<=12;i++)
  81.      {
  82.      temp_str+="<OPTION value=""+i.toString()+"">"+i.toString()+"</OPTION>";
  83.      }
  84.      temp_str+="</select>";
  85.      temp_str+=""  //右箭头
  86.      //temp_str+="<input type="Button" value=">>" onclick="change_date(1,1)" onmouseover="getlayerfocus()" style="color:#FFFFFF;background-color:#5d7790;cursor:hand">";
  87.      /*temp_str+="<input type="Button" value=">>" onclick="change_date(1,1)">";                                                    */
  88.      temp_str+="</td></tr><tr><td onmouseover="overcolor(this)" align="center">"
  89.      temp_str+="<font style="font-family:宋体;font-size:10px;color:#FF0000">日</font></td><td align="center">";temp_str+="<font style="font-family:宋体;font-size:10px;color:#000000">一</td><td align="center">"; temp_str+="<font style="font-family:宋体;font-size:10px;color:#000000">二</td><td align="center">"; temp_str+="<font style="font-family:宋体;font-size:10px;color:#000000">三</td><td align="center">"
  90.      temp_str+="<font style="font-family:宋体;font-size:10px;color:#000000">四</td><td align="center">";temp_str+="<font style="font-family:宋体;font-size:10px;color:#000000">五</font></td><td align="center">"; temp_str+="<font style="font-family:宋体;font-size:10px;color:#000000">六</font></td></tr>";
  91.      for (i=1 ;i<=6 ;i++)
  92.      {
  93.      temp_str+="<tr>";
  94.         for(j=1;j<=7;j++){
  95.             temp_str+="<td name="c"+i+"_"+j+""id="c"+i+"_"+j+"" style="font-family:Verdana,宋体;font-size:10px;color:#000000;CURSOR:hand" language="javascript" onmouseover="overcolor(this)" onmouseout="outcolor(this)" onclick="td_click(this)" align="center"></td>"
  96.             }
  97.      temp_str+="</tr>"
  98.      }
  99.      temp_str+="</td></tr></table>";
  100.      window.cele_date.innerHTML=temp_str;
  101. }
  102. function set_cele_date(year,month)
  103. {
  104.    var i,j,p,k
  105.    var nd=new Date(year,month-1,1);
  106.    event.cancelBubble=true;
  107.    cele_date_year.value=year;
  108.    cele_date_month.value=month;   
  109.    k=nd.getDay()-1
  110.    var temp;
  111.    for (i=1;i<=6;i++)
  112.       for(j=1;j<=7;j++)
  113.       {
  114.       eval("c"+i+"_"+j+".innerHTML=""");
  115.       eval("c"+i+"_"+j+".bgColor="#CEEFE7"");  //日期背景颜色
  116. // eval("c"+i+"_"+j+".style.font-size:10px"");
  117.       eval("c"+i+"_"+j+".style.cursor="hand"");
  118.       }
  119.    while(month-1==nd.getMonth())
  120.     { j=(nd.getDay() +1);
  121.       p=parseInt((nd.getDate()+k) / 7)+1;
  122.       eval("c"+p+"_"+j+".innerHTML="+"""+nd.getDate()+""");
  123.       if ((nd.getDate()==today.getDate())&&(cele_date_month.value==today.getMonth()+1)&&(cele_date_year.value==today.getYear())){
  124.         eval("c"+p+"_"+j+".bgColor="#9FDFCF"");  //当前日期背景颜色
  125.       }
  126.       if (nd>date_end || nd<date_start)
  127.       {
  128.       eval("c"+p+"_"+j+".bgColor="#FF0000"");
  129.       eval("c"+p+"_"+j+".style.cursor="text"");
  130.       }
  131.       nd=new Date(nd.valueOf() + 86400000)
  132.     }
  133. }
  134. //s_object:点击的对象;d_start-d_end有效的时间区段;需要存放值的控件;
  135. function GuDateSelect(eP,d_start,d_end,t_object)
  136. {
  137. window.cele_date.style.display="";
  138. window.cele_date.style.zIndex=99
  139. var s,cur_d
  140. var eT = eP.offsetTop;
  141. var eH = eP.offsetHeight+eT;
  142. var dH = window.cele_date.style.pixelHeight;
  143. var sT = document.body.scrollTop;
  144. var sL = document.body.scrollLeft;
  145. event.cancelBubble=true;
  146. window.cele_date.style.posLeft = event.clientX-event.offsetX+sL-5;  
  147. window.cele_date.style.posTop = event.clientY-event.offsetY+eH+sT-5;
  148. if (window.cele_date.style.posLeft+window.cele_date.clientWidth>document.body.clientWidth) window.cele_date.style.posLeft+=eP.offsetWidth-window.cele_date.clientWidth;
  149. //if (window.cele_date.style.posTop+window.cele_date.clientHeight>document.body.clientHeight) window.cele_date.style.posTop-=(eP.offsetHeight+window.cele_date.clientHeight+5);
  150. if (d_start!=""){
  151.     if (d_start=="today"){
  152.         date_start=new Date(today.getYear(),today.getMonth(),today.getDate());
  153.     }else{
  154.         s=d_start.split(separator);
  155.         date_start=new Date(s[0],s[1]-1,s[2]);
  156.     }
  157. }else{
  158.     date_start=new Date(1900,1,1);
  159. }
  160. if (d_end!=""){
  161.     s=d_end.split(separator);
  162.     date_end=new Date(s[0],s[1]-1,s[2]);
  163. }else{
  164.     date_end=new Date(3000,1,1);
  165. }
  166. g_object=t_object
  167. cur_d=new Date()
  168. set_cele_date(cur_d.getYear(),cur_d.getMonth()+1);
  169. window.cele_date.style.display="block";
  170. window.cele_date.focus();
  171. /****************MODIFY END**************************/
  172. }
  173. function td_click(t_object)
  174. {
  175. var t_d
  176. if (parseInt(t_object.innerHTML,10)>=1 && parseInt(t_object.innerHTML,10)<=31 ) 
  177. { t_d=new Date(cele_date_year.value,cele_date_month.value-1,t_object.innerHTML)
  178. if (t_d<=date_end && t_d>=date_start)
  179. {
  180. var year = cele_date_year.value;
  181. var month = cele_date_month.value;
  182. var day = t_object.innerHTML;
  183. if (parseInt(month)<10) month = "0" + month;
  184. if (parseInt(day)<10) day = "0" + day;
  185. g_object.value=year+separator+month+separator+day;
  186. window.cele_date.style.display="none";};
  187. }
  188. }
  189. function h_cele_date()
  190. {
  191. window.cele_date.style.display="none";
  192. }
  193. function overcolor(obj)
  194. {
  195.   if (obj.style.cursor=="hand") obj.style.color = "#FF0000";
  196.   inover=true;
  197.   window.cele_date.focus();
  198.   /************* MODIFY END ******************/
  199. }
  200. function outcolor(obj)
  201. {
  202.   obj.style.color = "#000000";
  203.   inover=false;
  204.   /************* MODIFY END ******************/
  205. }
  206. function getNow(o){
  207.     var Stamp=new Date();
  208.     var year = Stamp.getYear();
  209.     var month = Stamp.getMonth()+1;
  210.     var day = Stamp.getDate();
  211.     if(month<10){
  212. month="0"+month;
  213.     }
  214.     if(day<10){
  215. day="0"+day;
  216.     }
  217.     o.value=year+separator+month+separator+day;
  218. }
  219. function hilayer()
  220. {
  221. if (inover==false)
  222. {
  223. var lay=document.all.cele_date;
  224. lay.style.display="none";
  225. }
  226. }
  227. function getlayerfocus()
  228. {
  229. inover=true;
  230. }
  231. function lostlayerfocus()
  232. {
  233. inover=false;
  234. }
  235. //-->