一个js日历

    技术2022-05-11  125

    //      ------js日历程序--------------   ////  原作者:不详  升级:northsnow(塞北的雪)        升级日期:2005年12月

    //日历开始var date_start,date_end,g_objectvar today = new Date();var separator="-";var s_DATE;var inover=false;

    //mode :时间变换的类型0-年 1-月 2-直接选择月function change_date(temp,mode){ var t_month,t_year    if (mode){        if(mode==1)        t_month=parseInt(cele_date_month.value,10)+parseInt(temp,10);        else        t_month=parseInt(temp)        if (t_month<cele_date_month.options(0).text) {            cele_date_month.value=cele_date_month.options(cele_date_month.length-1).text;            change_date(parseInt(cele_date_year.value,10)-1,0);            }        else{            if (t_month>cele_date_month.options(cele_date_month.length-1).text){                cele_date_month.value=cele_date_month.options(0).text;                change_date(parseInt(cele_date_year.value,10)+1,0);                }                        else                {cele_date_month.value=t_month;                 set_cele_date(cele_date_year.value,cele_date_month.value);                                }        }    }      else{        t_year=parseInt(temp,10);                if (t_year<cele_date_year.options(0).text) {            cele_date_year.value=cele_date_year.options(0).text;            set_cele_date(cele_date_year.value,1);                            }        else{            if (parseInt(t_year,10)>parseInt(cele_date_year.options(cele_date_year.length-1).text,10)){                cele_date_year.value=cele_date_year.options(cele_date_year.length-1).text;                set_cele_date(cele_date_year.value,12);                                }                        else                {cele_date_year.value=t_year;                 set_cele_date(cele_date_year.value,cele_date_month.value);                                }        }    }

        window.cele_date.focus();

    }

    //初始化日历function init(d_start,d_end){//alert('ss');     var temp_str;     var i=0     var j=0     date_start=new Date(1980,7,1)     date_end=new Date(2004,8,1)     document.writeln("<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>");     window.cele_date.innerHTML="";     temp_str="<table border=/"1/" bgcolor=/"#DDDDDD/" bordercolor=/"white/"><tr><td colspan=7 οnmοuseοver=/"overcolor(this)/">";     temp_str+="<input type=/"Button/" value=/"<</" οnclick=/"change_date(-1,1)/" οnmοuseοver=/"getlayerfocus()/" style=/"color: #000099; background-color: #BFBFBF; cursor: hand/">-";

         temp_str+=""     temp_str+="<select name=/"cele_date_year/" id=/"cele_date_year/" language=/"javascript/" οnchange=/"change_date(this.value,0)/" οnmοuseοver=/"getlayerfocus()/" οnblur=/"getlayerfocus()/" style=/"font-size: 9pt; border: 1px #666666 outset; background-color: #F4F8FB/">"

         for (i=1990;i<=2120;i++)     {      temp_str+="<OPTION value=/""+i.toString()+"/">"+i.toString()+"</OPTION>";     }     temp_str+="</select>-";     temp_str+=""     temp_str+="<select name=/"cele_date_month/" id=/"cele_date_month/" language=/"javascript/" οnchange=/"change_date(this.value,2)/" οnmοuseοver=/"getlayerfocus()/" οnblur=/"getlayerfocus()/" style=/"font-size: 9pt; border: 1px #666666 outset; background-color: #F4F8FB/">"

         for (i=1;i<=12;i++)     {      temp_str+="<OPTION value=/""+i.toString()+"/">"+i.toString()+"</OPTION>";     }     temp_str+="</select>-";     temp_str+=""     temp_str+="<input type=/"Button/" value=/">>/" οnclick=/"change_date(1,1)/" οnmοuseοver=/"getlayerfocus()/"  style=/"color: #000099; background-color: #BFBFBF; cursor: hand/">";

         temp_str+="</td></tr><tr><td οnmοuseοver=/"overcolor(this)/">"     temp_str+="<font color=red>日</font></td><td>";temp_str+="一</td><td>"; temp_str+="二</td><td>"; temp_str+="三</td><td>"     temp_str+="四</td><td>";temp_str+="五</td><td>"; temp_str+="六</td></tr>";     for (i=1 ;i<=6 ;i++)     {     temp_str+="<tr>";        for(j=1;j<=7;j++){            temp_str+="<td name=/"c"+i+"_"+j+"/"id=/"c"+i+"_"+j+"/" style=/"CURSOR: hand/" style=/"COLOR:#000000/" language=/"javascript/" οnmοuseοver=/"overcolor(this)/" οnmοuseοut=/"outcolor(this)/" οnclick=/"td_click(this)/">?</td>"            }     temp_str+="</tr>"             }     temp_str+="</td></tr></table>";     window.cele_date.innerHTML=temp_str;}function set_cele_date(year,month){   var i,j,p,k   var nd=new Date(year,month-1,1);   var s_flag=0;   var cur_d2;   //alert(s_DATE);   var PatternDate=/^1|2/d{3}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|(3([0|1])))$/; if(s_DATE!='') {  if(PatternDate.test(s_DATE))  {     var s2=s_DATE.split(separator);          cur_d2=new Date(s2[0],parseFloat(s2[1])-1,s2[2]);     s_flag=1;  } }      event.cancelBubble=true;   cele_date_year.value=year;   cele_date_month.value=month;       k=nd.getDay()-1   var temp;   for (i=1;i<=6;i++)      for(j=1;j<=7;j++)      {      eval("c"+i+"_"+j+".innerHTML=/"/"");      eval("c"+i+"_"+j+".bgColor=/"#DDDDDD/"");      eval("c"+i+"_"+j+".style.cursor=/"hand/"");      }  while(month-1==nd.getMonth())  {         j=(nd.getDay() +1);   p=parseInt((nd.getDate()+k) / 7)+1;   eval("c"+p+"_"+j+".innerHTML="+"/""+nd.getDate()+"/"");   if ((nd.getDate()==today.getDate())&&(cele_date_month.value==today.getMonth()+1)&&(cele_date_year.value==today.getYear())){         eval("c"+p+"_"+j+".bgColor=/"#EFFB64/"");   }     if(s_flag==1)   {       //alert(cele_date_month.value);       //alert(cele_date_year.value);    if ((nd.getDate()==cur_d2.getDate())&&(cele_date_month.value==cur_d2.getMonth()+1)&&(cele_date_year.value==cur_d2.getYear())){     eval("c"+p+"_"+j+".bgColor=/"#0000FF/"");    }   }      if (nd>date_end || nd<date_start)   {    eval("c"+p+"_"+j+".bgColor=/"#FF9999/"");    eval("c"+p+"_"+j+".style.cursor=/"text/"");   }   nd=new Date(nd.valueOf() + 86400000)  }}

    //s_object:点击的对象;d_start-d_end有效的时间区段;需要存放值的控件;function show_cele_date(eP,d_start,d_end,t_object){window.cele_date.style.display="";window.cele_date.style.zIndex=99var s,cur_dvar eT = eP.offsetTop;  var eH = eP.offsetHeight+eT;  var dH = window.cele_date.style.pixelHeight;  var sT = document.body.scrollTop; var sL = document.body.scrollLeft; event.cancelBubble=true;window.cele_date.style.posLeft = event.clientX;  //-event.offsetX+sL-5;  window.cele_date.style.posTop = event.clientY;   //-event.offsetY+eH+sT-5;if (window.cele_date.style.posLeft+window.cele_date.clientWidth>document.body.clientWidth) window.cele_date.style.posLeft+=eP.offsetWidth-window.cele_date.clientWidth;if (d_start!=""){    if (d_start=="today"){        date_start=new Date(today.getYear(),today.getMonth(),today.getDate());    }else{        s=d_start.split(separator);        date_start=new Date(s[0],s[1]-1,s[2]);    }}else{    date_start=new Date(1900,1,1);}

    if (d_end!=""){    s=d_end.split(separator);    date_end=new Date(s[0],s[1]-1,s[2]);}else{    date_end=new Date(3000,1,1);}

    g_object=t_object

    cur_d=new Date()//做了修改 开始var PatternDate=/^1|2/d{3}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|(3([0|1])))$/;s_DATE=t_object.value;if(s_DATE!=''){ if(PatternDate.test(s_DATE)) {    var s2=s_DATE.split(separator);    var cur_d2=new Date(s2[0],parseFloat(s2[1])-1,s2[2]);    set_cele_date(cur_d2.getYear(),cur_d2.getMonth()+1); } else { set_cele_date(cur_d.getYear(),cur_d.getMonth()+1); }}else{   set_cele_date(cur_d.getYear(),cur_d.getMonth()+1);}//做了修改 结束window.cele_date.style.display="block";

    window.cele_date.focus();

    }function td_click(t_object){var t_dif (parseInt(t_object.innerHTML,10)>=1 && parseInt(t_object.innerHTML,10)<=31 ) { t_d=new Date(cele_date_year.value,cele_date_month.value-1,t_object.innerHTML)if (t_d<=date_end && t_d>=date_start){var year = cele_date_year.value;var month = cele_date_month.value;var day = t_object.innerHTML;if (parseInt(month)<10) month = "0" + month;if (parseInt(day)<10) day = "0" + day;

    g_object.value=year+separator+month+separator+day;

    window.cele_date.style.display="none";}}

    }function h_cele_date(){window.cele_date.style.display="none";}

    function overcolor(obj){  if (obj.style.cursor=="hand") obj.style.color = "#FFFFFF";

      inover=true;  window.cele_date.focus();

    }

    function outcolor(obj){ obj.style.color = "#000000"; inover=false;

    }

    function getNow(o){    var Stamp=new Date();    var year = Stamp.getYear();    var month = Stamp.getMonth()+1;    var day = Stamp.getDate();    if(month<10){ month="0"+month;    }    if(day<10){ day="0"+day;    }    o.value=year+separator+month+separator+day;}

    function hilayer(){ if (inover==false) {  var lay=document.all.cele_date;  lay.style.display="none"; }}function getlayerfocus(){ inover=true;}function lostlayerfocus(){ inover=false;}init();//日历结束

    //          调用方法   ///

    <input name="start_date" type="text" οndblclick="show_cele_date(this,'','',this)"  size="10"  value="">


    最新回复(0)