输入框JS日历选择器

  1. <script language=javascript>
  2. var DS_x,DS_y;
  3. function dateSelector()  //构造dateSelector对象,用来实现一个日历形式的日期输入框。
  4. {
  5. var myDate=new Date();
  6. this.year=myDate.getFullYear()+1;  //定义year属性,年份,默认值为当前系统年份。
  7. this.month=myDate.getMonth()+1;  //定义month属性,月份,默认值为当前系统月份。
  8. this.date=myDate.getDate();  //定义date属性,日,默认值为当前系统的日。
  9. this.inputName='';  //定义inputName属性,即输入框的name,默认值为空。注意:在同一页中出现多个日期输入框,不能有重复的name!
  10. this.display=display;  //定义display方法,用来显示日期输入框。
  11. }
  12. function display()  //定义dateSelector的display方法,它将实现一个日历形式的日期选择框。
  13. {
  14. var week=new Array('日','一','二','三','四','五','六');
  15. document.write("<style type=text/css>");
  16. document.write("  .ds_font td,span  { font: normal 12px 宋体; color: #000000; }");
  17. document.write("  .ds_border  { border: 1px solid #000000; cursor: hand; background-color: #DDDDDD }");
  18. document.write("  .ds_border2  { border: 1px solid #000000; cursor: hand; background-color: #DDDDDD }");
  19. document.write("</style>");
  20. document.write("<input style='text-align:center;' id='DS_"+this.inputName+"' name='"+this.inputName+"' value='"+this.year+"-"+this.month+"-"+this.date+"' title=双击可进行编缉 οndblclick='this.readOnly=false;this.focus()' οnblur='this.readOnly=true' readonly>");
  21. document.write("<button style='width:60px;height:18px;font-size:12px;margin:1px;border:1px solid #A4B3C8;background-color:#DFE7EF;' type=button οnclick=this.nextSibling.style.display='block' οnfοcus=this.blur()>选择日期</button>");
  22. document.write("<div style='position:absolute;display:none;text-align:center;width:0px;height:0px;overflow:visible' onselectstart='return false;'>");
  23. document.write("  <div style='position:absolute;left:-60px;top:20px;width:142px;height:165px;background-color:#F6F6F6;border:1px solid #245B7D;' class=ds_font>");
  24. document.write("    <table cellpadding=0 cellspacing=1 width=140 height=20 bgcolor=#CEDAE7 οnmοusedοwn='DS_x=event.x-parentNode.style.pixelLeft;DS_y=event.y-parentNode.style.pixelTop;setCapture();' οnmοuseup='releaseCapture();' οnmοusemοve='dsMove(this.parentNode)' style='cursor:move;'>");
  25. document.write("      <tr align=center>");
  26. document.write("        <td width=12% οnmοuseοver=this.className='ds_border' οnmοuseοut=this.className='' οnclick=subYear(this) title='减小年份'><<</td>");
  27. document.write("        <td width=12% οnmοuseοver=this.className='ds_border' οnmοuseοut=this.className='' οnclick=subMonth(this) title='减小月份'><</td>");
  28. document.write("        <td width=52%><b>"+this.year+"</b><b>年</b><b>"+this.month+"</b><b>月</b></td>");
  29. document.write("        <td width=12% οnmοuseοver=this.className='ds_border' οnmοuseοut=this.className='' οnclick=addMonth(this) title='增加月份'>></td>");
  30. document.write("        <td width=12% οnmοuseοver=this.className='ds_border' οnmοuseοut=this.className='' οnclick=addYear(this) title='增加年份'>>></td>");
  31. document.write("      </tr>");
  32. document.write("    </table>");
  33. document.write("    <table cellpadding=0 cellspacing=0 width=140 height=20 οnmοusedοwn='DS_x=event.x-parentNode.style.pixelLeft;DS_y=event.y-parentNode.style.pixelTop;setCapture();' οnmοuseup='releaseCapture();' οnmοusemοve='dsMove(this.parentNode)' style='cursor:move;'>");
  34. document.write("      <tr align=center>");
  35. for(i=0;i<7;i++)
  36. document.write("      <td>"+week[i]+"</td>");
  37. document.write("      </tr>");
  38. document.write("    </table>");
  39. document.write("    <table cellpadding=0 cellspacing=2 width=140 bgcolor=#EEEEEE>");
  40. for(i=0;i<6;i++)
  41. {
  42. document.write("    <tr align=center>");
  43. for(j=0;j<7;j++)
  44. document.write("    <td width=10% height=16 οnmοuseοver=if(this.innerText!=''&&this.className!='ds_border2')this.className='ds_border' οnmοuseοut=if(this.className!='ds_border2')this.className='' οnclick=getvalue(this,document.all('DS_"+this.inputName+"'))></td>");
  45. document.write("    </tr>");
  46. }
  47. document.write("    </table>");
  48. document.write("    <span style=cursor:hand οnclick=this.parentNode.parentNode.style.display='none'>【关闭】</span>");
  49. document.write("  </div>");
  50. document.write("</div>");
  51. dateShow(document.all("DS_"+this.inputName).nextSibling.nextSibling.childNodes[0].childNodes[2],this.year,this.month)
  52. }
  53. function subYear(obj)  //减小年份
  54. {
  55. var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
  56. myObj[0].innerHTML=eval(myObj[0].innerHTML)-1;
  57. dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
  58. }
  59. function addYear(obj)  //增加年份
  60. {
  61. var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
  62. myObj[0].innerHTML=eval(myObj[0].innerHTML)+1;
  63. dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
  64. }
  65. function subMonth(obj)  //减小月份
  66. {
  67. var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
  68. var month=eval(myObj[2].innerHTML)-1;
  69. if(month==0)
  70. {
  71. month=12;
  72. subYear(obj);
  73. }
  74. myObj[2].innerHTML=month;
  75. dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
  76. }
  77. function addMonth(obj)  //增加月份
  78. {
  79. var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
  80. var month=eval(myObj[2].innerHTML)+1;
  81. if(month==13)
  82. {
  83. month=1;
  84. addYear(obj);
  85. }
  86. myObj[2].innerHTML=month;
  87. dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
  88. }
  89. function dateShow(obj,year,month)  //显示各月份的日
  90. {
  91. var myDate=new Date(year,month-1,1);
  92. var today=new Date();
  93. var day=myDate.getDay();
  94. var selectDate=obj.parentNode.parentNode.previousSibling.previousSibling.value.split('-');
  95. var length;
  96. switch(month)
  97. {
  98. case 1:
  99. case 3:
  100. case 5:
  101. case 7:
  102. case 8:
  103. case 10:
  104. case 12:
  105. length=31;
  106. break;
  107. case 4:
  108. case 6:
  109. case 9:
  110. case 11:
  111. length=30;
  112. break;
  113. case 2:
  114. if((year%4==0)&&(year%100!=0)||(year%400==0))
  115. length=29;
  116. else
  117. length=28;
  118. }
  119. for(i=0;i<obj.cells.length;i++)
  120. {
  121. obj.cells[i].innerHTML='';
  122. obj.cells[i].style.color='';
  123. obj.cells[i].className='';
  124. }
  125. for(i=0;i<length;i++)
  126. {
  127. obj.cells[i+day].innerHTML=(i+1);
  128. if(year==today.getFullYear()&&(month-1)==today.getMonth()&&(i+1)==today.getDate())
  129. obj.cells[i+day].style.color='red';
  130. if(year==eval(selectDate[0])&&month==eval(selectDate[1])&&(i+1)==eval(selectDate[2]))
  131. obj.cells[i+day].className='ds_border2';
  132. }
  133. }
  134. function getvalue(obj,inputObj)  //把选择的日期传给输入框
  135. {
  136. var myObj=inputObj.nextSibling.nextSibling.childNodes[0].childNodes[0].cells[2].childNodes;
  137. if(obj.innerHTML)
  138. inputObj.value=myObj[0].innerHTML+"-"+myObj[2].innerHTML+"-"+obj.innerHTML;
  139. inputObj.nextSibling.nextSibling.style.display='none';
  140. for(i=0;i<obj.parentNode.parentNode.parentNode.cells.length;i++)
  141. obj.parentNode.parentNode.parentNode.cells[i].className='';
  142. obj.className='ds_border2'
  143. }
  144. function dsMove(obj)  //实现层的拖移
  145. {
  146. if(event.button==1)
  147. {
  148. var X=obj.clientLeft;
  149. var Y=obj.clientTop;
  150. obj.style.pixelLeft=X+(event.x-DS_x);
  151. obj.style.pixelTop=Y+(event.y-DS_y);
  152. }
  153. }
  154. </script>
  155. <script language=javascript>
  156. var myDate=new dateSelector();
  157. myDate.year--;
  158. myDate.inputName='start_date';  //注意这里设置输入框的name,同一页中日期输入框,不能出现重复的name。
  159. myDate.display();
  160. </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值