javascript实现的日期选择插件

来源:互联网 发布:遥知天下事 编辑:程序博客网 时间:2024/06/05 14:15

文件一:selectDate.js

Code:
  1. var DS_x,DS_y;   
  2. function dateSelector()  {   
  3.   var myDate=new Date();   
  4.   this.year=myDate.getFullYear();   
  5.   this.month=myDate.getMonth()+1;   
  6.   this.date=myDate.getDate();   
  7.   this.inputName='time';     
  8.   this.display=display;     
  9. }   
  10. function display()     
  11. {   
  12.   var week=new Array('日','一','二','三','四','五','六');   
  13.   document.write("<style type=text/css>");   
  14.   document.write("  .ds_font td,span  { font: normal 12px 宋体; color: #000000; }");   
  15.   document.write("  .ds_border  { border: 1px solid #000000; cursor: hand; background-color: #DDDDDD }");   
  16.   document.write("  .ds_border2  { border: 1px solid #000000; cursor: hand; background-color: #DDDDDD }");   
  17.   document.write("</style>");   
  18.   var dateStr="<input style='text-align:center; background-color: #ffeeee;' id='DS_"+this.inputName+"' name='this.inputName' value='"+this.year+"-";   
  19.   if((""+this.month).length==1){   
  20.     dateStr+="0"+this.month;   
  21.   }else{   
  22.     dateStr+=this.month;   
  23.   }   
  24.   dateStr+="-";   
  25.   if((""+this.date).length==1){   
  26.     dateStr+="0"+this.date;   
  27.   }else{   
  28.     dateStr+=this.date;   
  29.   }   
  30.   dateStr+="' size='12' onblur='this.readOnly=true' readonly>";   
  31.   document.write(dateStr);   
  32.   document.write("<button type=button style='color:blue;' onclick=this.nextSibling.style.display='block' onfocus=this.blur()>选择日期</button>");   
  33.   document.write("<div style='position:absolute;display:none;text-align:center;width:0px;height:0px;overflow:visible' onselectstart='return false;'>");   
  34.   document.write("  <div style='position:absolute;left:-60px;top:20px;width:142px;height:165px;background-color:#F6F6F6;border:1px solid #245B7D;' class=ds_font>");   
  35.   document.write("    <table cellpadding=0 cellspacing=1 width=140 height=20 bgcolor=#CEDAE7 onmousedown='DS_x=event.x-parentNode.style.pixelLeft;DS_y=event.y-parentNode.style.pixelTop;setCapture();' onmouseup='releaseCapture();' onmousemove='dsMove(this.parentNode)' style='cursor:move;'>");   
  36.   document.write("      <tr align=center>");   
  37.   document.write("        <td width=12% onmouseover=this.className='ds_border' onmouseout=this.className='' onclick=subYear(this) title='减小年份'><<</td>");   
  38.   document.write("        <td width=12% onmouseover=this.className='ds_border' onmouseout=this.className='' onclick=subMonth(this) title='减小月份'><</td>");   
  39.   document.write("        <td width=52%><b>"+this.year+"</b><b>年</b><b>"+this.month+"</b><b>月</b></td>");   
  40.   document.write("        <td width=12% onmouseover=this.className='ds_border' onmouseout=this.className='' onclick=addMonth(this) title='增加月份'>></td>");   
  41.   document.write("        <td width=12% onmouseover=this.className='ds_border' onmouseout=this.className='' onclick=addYear(this) title='增加年份'>>></td>");   
  42.   document.write("      </tr>");   
  43.   document.write("    </table>");   
  44.   document.write("    <table cellpadding=0 cellspacing=0 width=140 height=20 onmousedown='DS_x=event.x-parentNode.style.pixelLeft;DS_y=event.y-parentNode.style.pixelTop;setCapture();' onmouseup='releaseCapture();' onmousemove='dsMove(this.parentNode)' style='cursor:move;'>");   
  45.   document.write("      <tr align=center>");   
  46.   for(i=0;i<7;i=i+1)   
  47.  document.write("      <td>"+week[i]+"</td>");   
  48.   document.write("      </tr>");   
  49.   document.write("    </table>");   
  50.   document.write("    <table cellpadding=0 cellspacing=2 width=140 bgcolor=#EEEEEE>");   
  51.   for(i=0;i<6;i=i+1)   
  52.   {   
  53.     document.write("    <tr align=center>");   
  54.  for(j=0;j<7;j=j+1)   
  55.       document.write("    <td width=10% height=16 onmouseover=if(this.innerText!=''&&this.className!='ds_border2')this.className='ds_border' onmouseout=if(this.className!='ds_border2')this.className='' onclick=getValue(this,document.all('DS_"+this.inputName+"'))></td>");   
  56.     document.write("    </tr>");   
  57.   }   
  58.   document.write("    </table>");   
  59.   document.write("    <span style=cursor:hand onclick=this.parentNode.parentNode.style.display='none'>【关闭】</span>");   
  60.   document.write("  </div>");   
  61.   document.write("</div>");   
  62.   dateShow(document.all("DS_"+this.inputName).nextSibling.nextSibling.childNodes[0].childNodes[2],this.year,this.month)   
  63. }   
  64. function subYear(obj)  //减小年份   
  65. {   
  66.   var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;   
  67.   myObj[0].innerHTML=eval(myObj[0].innerHTML)-1;   
  68.   dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))   
  69. }   
  70. function addYear(obj)  //增加年份   
  71. {   
  72.   var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;   
  73.   myObj[0].innerHTML=eval(myObj[0].innerHTML)+1;   
  74.   dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))   
  75. }   
  76. function subMonth(obj)  //减小月份   
  77. {   
  78.   var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;   
  79.   var month=eval(myObj[2].innerHTML)-1;   
  80.   if(month==0)   
  81.   {   
  82.     month=12;   
  83.     subYear(obj);   
  84.   }   
  85.   if(month<10){   
  86.   }   
  87.   myObj[2].innerHTML=month;   
  88.   dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))   
  89. }   
  90. function addMonth(obj)  //增加月份   
  91. {   
  92.   var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;   
  93.   var month=eval(myObj[2].innerHTML)+1;   
  94.   if(month==13)   
  95.   {   
  96.     month=1;   
  97.     addYear(obj);   
  98.   }   
  99.   myObj[2].innerHTML=month;   
  100.   dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))   
  101. }   
  102. function dateShow(obj,year,month)  //显示各月份的日   
  103. {   
  104.   var myDate=new Date(year,month-1,1);   
  105.   var today=new Date();   
  106.   var day=myDate.getDay();   
  107.   var selectDate=obj.parentNode.parentNode.previousSibling.previousSibling.value.split('-');   
  108.   var length;   
  109.   switch(month)   
  110.   {   
  111.     case 1:   
  112.     case 3:   
  113.     case 5:   
  114.     case 7:   
  115.     case 8:   
  116.     case 10:   
  117.     case 12: length=31; break;   
  118.     case 4:   
  119.     case 6:   
  120.     case 9:   
  121.     case 11: length=30; break;   
  122.     case 2:   
  123.       if((year%4==0)&&(year%100!=0)||(year%400==0))   
  124.         length=29;   
  125.       else  
  126.         length=28;   
  127.   }   
  128.   for(i=0;i<obj.cells.length;i++)   
  129.   {   
  130.     obj.cells[i].innerHTML='';   
  131.     obj.cells[i].style.color='';   
  132.     obj.cells[i].className='';   
  133.   }   
  134.   for(i=0;i<length;i++)   
  135.   {   
  136.     obj.cells[i+day].innerHTML=(i+1);   
  137.     if(year==today.getFullYear()&&(month-1)==today.getMonth()&&(i+1)==today.getDate())   
  138.       obj.cells[i+day].style.color='red';   
  139.     if(year==eval(selectDate[0])&&month==eval(selectDate[1])&&(i+1)==eval(selectDate[2]))   
  140.       obj.cells[i+day].className='ds_border2';   
  141.   }   
  142. }   
  143. function getValue(obj,inputObj)  //把选择的日期传给输入框   
  144. {   
  145.   var myObj=inputObj.nextSibling.nextSibling.childNodes[0].childNodes[0].cells[2].childNodes;   
  146.   if(obj.innerHTML){   
  147.   var month1=myObj[2].innerHTML;   
  148.   var date1=obj.innerHTML;   
  149.   if(month1<10)   
  150.   {   
  151.    month1="0"+month1;   
  152.   }   
  153.   if(date1<10){   
  154.    date1="0"+date1;   
  155.   }   
  156.     inputObj.value=myObj[0].innerHTML+"-"+month1+"-"+date1;   
  157.     }   
  158.   inputObj.nextSibling.nextSibling.style.display='none';   
  159.   for(i=0;i<obj.parentNode.parentNode.parentNode.cells.length;i++)   
  160.     obj.parentNode.parentNode.parentNode.cells[i].className='';   
  161.   obj.className='ds_border2'  
  162. }   
  163. function dsMove(obj)  //实现层的拖移   
  164. {   
  165.   if(event.button==1)   
  166.   {   
  167.     var X=obj.clientLeft;   
  168.     var Y=obj.clientTop;   
  169.     obj.style.pixelLeft=X+(event.x-DS_x);   
  170.     obj.style.pixelTop=Y+(event.y-DS_y);   
  171.   }   
  172. }   
  173. var myDate=new dateSelector();   
  174. myDate.year;   
  175. myDate.inputName='time';    
  176. myDate.display();   

文件二:简单测试一下test.htm

Code:
  1. <html>  
  2. <head>  
  3. <title>知识库</title>  
  4. </head>  
  5. <body bgcolor="">  
  6. <table>  
  7.   <tr align="center">  
  8.     <td height="22" >发布时间:</td>  
  9.     <td height="22" align="center" >  
  10.     <script language="javascript" src="script.js"></script>                   
  11.    </td>  
  12.   </tr>  
  13. </table>  
  14. <input type="button" value="an" onclick="alert(document.getElementById('DS_time').value);">  
  15. </body>  
  16. </html>   

 

原创粉丝点击