前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >好多Javascript日期选择器呀–1

好多Javascript日期选择器呀–1

作者头像
Java架构师必看
发布2021-03-22 15:02:06
发布2021-03-22 15:02:06
8790
举报
文章被收录于专栏:Java架构师必看Java架构师必看

<script language=javascript> var DS_x,DS_y;

function dateSelector()  //构造dateSelector对象,用来实现一个日历形式的日期输入框。 {   var myDate=new Date();   this.year=myDate.getFullYear();  //定义year属性,年份,默认值为当前系统年份。   this.month=myDate.getMonth()+1;  //定义month属性,月份,默认值为当前系统月份。   this.date=myDate.getDate();  //定义date属性,日,默认值为当前系统的日。   this.inputName='';  //定义inputName属性,即输入框的name,默认值为空。注意:在同一页中出现多个日期输入框,不能有重复的name!   this.display=display;  //定义display方法,用来显示日期输入框。 }

function display()  //定义dateSelector的display方法,它将实现一个日历形式的日期选择框。 {   var week=new Array('日','一','二','三','四','五','六');

  document.write("<style type=text/css>");   document.write("  .ds_font td,span  { font: normal 12px 宋体; color: #000000; }");   document.write("  .ds_border  { border: 1px solid #000000; cursor: hand; background-color: #DDDDDD }");   document.write("  .ds_border2  { border: 1px solid #000000; cursor: hand; background-color: #DDDDDD }");   document.write("</style>");

  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>");   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>");

  document.write("<div style='position:absolute;display:none;text-align:center;width:0px;height:0px;overflow:visible' onselectstart='return false;'>");   document.write("  <div style='position:absolute;left:-60px;top:20px;width:142px;height:165px;background-color:#F6F6F6;border:1px solid #245B7D;' class=ds_font>");   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;'>");   document.write("      <tr align=center>");   document.write("        <td width=12% οnmοuseοver=this.className='ds_border' οnmοuseοut=this.className='' οnclick=subYear(this) title='减小年份'><<</td>");   document.write("        <td width=12% οnmοuseοver=this.className='ds_border' οnmοuseοut=this.className='' οnclick=subMonth(this) title='减小月份'><</td>");   document.write("        <td width=52%><b>"+this.year+"</b><b>年</b><b>"+this.month+"</b><b>月</b></td>");   document.write("        <td width=12% οnmοuseοver=this.className='ds_border' οnmοuseοut=this.className='' οnclick=addMonth(this) title='增加月份'>></td>");   document.write("        <td width=12% οnmοuseοver=this.className='ds_border' οnmοuseοut=this.className='' οnclick=addYear(this) title='增加年份'>>></td>");   document.write("      </tr>");   document.write("    </table>");

  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;'>");   document.write("      <tr align=center>");   for(i=0;i<7;i++)     document.write("      <td>"+week[i]+"</td>");   document.write("      </tr>");   document.write("    </table>");

  document.write("    <table cellpadding=0 cellspacing=2 width=140 bgcolor=#EEEEEE>");   for(i=0;i<6;i++)   {     document.write("    <tr align=center>");     for(j=0;j<7;j++)       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>");     document.write("    </tr>");   }   document.write("    </table>");

  document.write("    <span style=cursor:hand οnclick=this.parentNode.parentNode.style.display='none'>【关闭】</span>");   document.write("  </div>");   document.write("</div>");

  dateShow(document.all("DS_"+this.inputName).nextSibling.nextSibling.childNodes[0].childNodes[2],this.year,this.month) }

function subYear(obj)  //减小年份 {   var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;   myObj[0].innerHTML=eval(myObj[0].innerHTML)-1;   dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML)) }

function addYear(obj)  //增加年份 {   var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;   myObj[0].innerHTML=eval(myObj[0].innerHTML)+1;   dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML)) }

function subMonth(obj)  //减小月份 {   var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;   var month=eval(myObj[2].innerHTML)-1;   if(month==0)   {     month=12;     subYear(obj);   }   myObj[2].innerHTML=month;   dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML)) }

function addMonth(obj)  //增加月份 {   var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;   var month=eval(myObj[2].innerHTML)+1;   if(month==13)   {     month=1;     addYear(obj);   }   myObj[2].innerHTML=month;   dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML)) }

function dateShow(obj,year,month)  //显示各月份的日 {   var myDate=new Date(year,month-1,1);   var today=new Date();   var day=myDate.getDay();   var selectDate=obj.parentNode.parentNode.previousSibling.previousSibling.value.split('-');   var length;   switch(month)   {     case 1:     case 3:     case 5:     case 7:     case 8:     case 10:     case 12:       length=31;       break;     case 4:     case 6:     case 9:     case 11:       length=30;       break;     case 2:       if((year%4==0)&&(year%100!=0)||(year%400==0))         length=29;       else         length=28;   }   for(i=0;i<obj.cells.length;i++)   {     obj.cells[i].innerHTML='';     obj.cells[i].style.color='';     obj.cells[i].className='';   }   for(i=0;i<length;i++)   {     obj.cells[i+day].innerHTML=(i+1);     if(year==today.getFullYear()&&(month-1)==today.getMonth()&&(i+1)==today.getDate())       obj.cells[i+day].style.color='red';     if(year==eval(selectDate[0])&&month==eval(selectDate[1])&&(i+1)==eval(selectDate[2]))       obj.cells[i+day].className='ds_border2';   } }

function getvalue(obj,inputObj)  //把选择的日期传给输入框 {   var myObj=inputObj.nextSibling.nextSibling.childNodes[0].childNodes[0].cells[2].childNodes;   if(obj.innerHTML)     inputObj.value=myObj[0].innerHTML+"-"+myObj[2].innerHTML+"-"+obj.innerHTML;   inputObj.nextSibling.nextSibling.style.display='none';   for(i=0;i<obj.parentNode.parentNode.parentNode.cells.length;i++)     obj.parentNode.parentNode.parentNode.cells[i].className='';   obj.className='ds_border2' }

function dsMove(obj)  //实现层的拖移 {   if(event.button==1)   {     var X=obj.clientLeft;     var Y=obj.clientTop;     obj.style.pixelLeft=X+(event.x-DS_x);     obj.style.pixelTop=Y+(event.y-DS_y);   } } </script> 从 <script language=javascript>   var myDate=new dateSelector();   myDate.year--;   myDate.inputName='start_date';  //注意这里设置输入框的name,同一页中日期输入框,不能出现重复的name。   myDate.display(); </script>

本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档