当前位置: 首页 > 编程日记 > 正文

好多Javascript日期选择器呀--1

<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>

相关文章:

扶贫干部拍胸脯认证,AI开发者上手零门槛,百度打造 “云智一体”全栈开发杀手锏...

“我可以拍着胸脯说识别准确率很高。”扶贫干部刘乐这样评价他在使用百度EasyDL平台助力扶贫的效果&#xff0c;他是陕西省汉中市扶贫信息中心副主任&#xff0c;也是一名热爱编程的程序员。 在近期百度智能云举办的2021云智技术论坛首场活动上&#xff0c;刘乐介绍&#xff0c…

CSS3 新特性

CSS3 是最新的 CSS 标准&#xff0c;并且完全向后兼容&#xff0c;不过目前W3C 仍然在对 CSS3 规范进行开发&#xff0c;虽然标准的规范还没有正式发布&#xff0c;但是现代浏览器已经支持相当多的 CSS3 属性了。CSS3 提供了很多可以把玩的新特性&#xff0c;模糊了之前只控制样…

在.net中使用GDI+来提高gif图片的保存画质

//本文章有www.blue1000.com翻译&#xff0c;原文地址http://codebetter.com/blogs/brendan.tompkins/archive/2004/01/26/6103.aspx //尊重他人劳动成果&#xff0c;转载请注明出处。 写程序的时候经常用到gdi&#xff0c;他可以将一幅深色32 bpp图像保存为一个gif文件&…

随记:kickstart远程批量无人值守安装linux

环境&#xff1a;RHEL6.2组件&#xff1a;dhcp tftp vsftp kickstart原理&#xff1a;需安装linux的客户机通过PXE方式启动&#xff1b;通过dhcp取得IP地址&#xff1b;通过TFTP下载引导进程文件pxelinux.0&#xff0c;内核文件vmlinuz&#xff0c;底层驱动initrd.img&…

第五届全国大学生计算机系统能力培养大赛 | 赠书

全国大学生计算机系统能力培养大赛是由教育部高等学校计算机类专业教学指导委员会和系统能力培养研究专家组共同发起&#xff0c;以学科竞赛推动专业建设和计算机领域创新人才培养体系改革、培育我国高端芯片及核心系统的技术突破与产业化后备人才为目标&#xff0c;面向高校大…

玉山银行的一名新员工“玉山小i随身金融顾问”

市场竞争、监管变化、客户体验一直在对金融行业发起挑战&#xff0c;所以无论监管、竞争、客户都会影响金融行业在成本和服务上的创新&#xff0c;金融行业越来越多的开始利用人工智能去满足现有发展提出的要求。 台湾玉山银行的数字化转型就是一个很好的例子。台湾有一句顺口溜…

DataGridView 密码列(显示为*号)的设置

曾经为在DataGridView中设置密码列&#xff08;显示为*号&#xff09;而发愁&#xff0c;如何把Windows 窗体 DataGridView 的某一列的数据显示为“*”。 哈哈&#xff0c;今天终于搞定了。需要在DataGridView的2个事件中写代码真麻烦&#xff01;下面的代码把第4列设置为密码…

在Android中进行单元测试遇到的问题

问题1、Cannot connect to VM socket closed 在使用JUnit进行测试的时候&#xff0c;遇到这个问题。网上的解释是&#xff1a;使用Eclipse对Java代码进行调试,无论是远程JVM还是本地JVM都会进行Socket通讯.发生这样的错误是由于这些软件会修改winsock,还会监听和占用一些端口&…

英特尔第三代 Ice Lake 发布正面与 AMD EPYC PK,结果令人大跌眼镜!

作者 | 夕颜 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 导读&#xff1a;传闻已久的第三代英特尔至强可扩展处理器&#xff0c;终于在北京风光最美的4月份发布了。 北京时间4月7日晚&#xff0c;在著名的网红打卡地&#xff0c;百年老首钢工厂遗留下的工业建筑…

荣之联“云桥OneBridge”让IT运维事半功倍

近日&#xff0c;荣之联发布“云桥OneBridge”新一代的轻量级企业用户账号管理平台&#xff0c;为企业提供账号全生命周期管理解决方案。“云桥OneBridge”让IT运维工作效率大幅提升&#xff0c;并降低人为差错率&#xff0c;IT运维从此事半功倍。 据介绍&#xff0c;北京荣之联…

自定义GridView分页模板

GridView较之DataGrid提供了更加强大、更加完善的功能&#xff0c;而且具备了丰富的可扩展功能&#xff0c;可以使用GridView提供的pagertemplate自定义分页模板&#xff1a; 事实上&#xff0c;GridView默认的几中分页样式&#xff0c;都是将相关按钮的CommandName设为Page&a…

“雾霾”天里坐看云起时-【软件和信息服务】2014.01

2013年是中国关注雾霾的元年&#xff0c;中国经济高速发展了30多年后&#xff0c;我们终于幡然醒悟&#xff1a;雾霾和各种污染也开始正式进入公众和各级政府的视野。VMware在12月6日召开的VSS上海站并没有因为雾霾肆虐而降低热度&#xff0c;IT界在雾霾天里继续着云中漫步。20…

CSDN 给你一个薅羊毛的机会!你真的不要吗?

抢红包、集福卡、转锦鲤等等&#xff0c;每年过年过节&#xff0c;各种价值几十亿的瓜分活动&#xff0c;对于网络冲浪选手来说&#xff0c;眼花缭乱但也乐趣满满。可现实是&#xff1a;你抢了5毛8&#xff0c;人家抢了好几万&#xff01;甚至前段时间&#xff0c;字节跳动安全…

ASP.NET TricksTip:关于Tooltip(title)的换行问题

我们知道&#xff0c;为了使对于普通 HTML 元素的title可以换行&#xff0c;至少可以有可以两种方式&#xff1a; 1。将title的文本分行写 <a href"#" title"helloworld">hello world</a>2。插入换行符号 <a href"#" title&q…

谷歌高管又变动:AI 研究部门元老即将离职

整理 | 寇雪芹头图 | 下载于视觉中国出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;本周二&#xff0c;谷歌研究院负责人 Samy Bengio 宣布辞职。Samy Bengio 在公司内部邮件中表示自己决定离开谷歌&#xff0c;并将于 4 月 28 日正式离职。目前&#xff0c;Samy Be…

jQuery 1.9 移除了 $.browser 的替代方法

$.browser是通过正则表达式来匹配userAgent来判断浏览器版本和种类的.jquery1.3.2版本的文档中已经声明jquery.browser及jquery.browser.version建议弃用&#xff0c;可以使用jquery.support来代替。jQuery 从 1.9 版开始&#xff0c;移除了 $.browser 和 $.browser.version &a…

异常检测算法:Isolation Forest

iForest &#xff08;Isolation Forest&#xff09;是由Liu et al. [1] 提出来的基于二叉树的ensemble异常检测算法&#xff0c;具有效果好、训练快&#xff08;线性复杂度&#xff09;等特点。 1. 前言 iForest为聚类算法&#xff0c;不需要标记数据训练。首先给出几个定义&am…

asp.net 2.0中的弹出对话框

在asp.net 1.1中&#xff0c;要做1个弹出的对话框的话&#xff0c;一般是在服务端的代码中这样写&#xff1a; btnClick.Attributes.Add("onclick", "return confirm(Are you sure?);"); 现在在ASP.NET 2.0中&#xff0c;只要使用客户端的代码就可以拉&a…

2014学习目标

学习目标 给自己定一个学习计划&#xff0c;省着没有目的瞎弄。 整理javascript基础&#xff0c;记录博客&#xff08;进行中......&#xff09;学习jquery源码&#xff0c;培养自己的实战技巧学习nodejs&#xff0c;充实自己&#xff0c;记录博客学习git的使用&#xff0c;记录…

2021全球最具影响力 AI 学者榜单: 中国占比11.1%,位列第二

2021 年 4 月 8 日&#xff0c;2021 年人工智能全球最具影响力学者——AI 2000 榜单重磅揭晓。AI 2000 榜单由清华大学 AMiner 联合北京智源人工智能研究院、清华 - 中国工程院知识智能联合研究中心共同发布&#xff0c;旨在通过 AMiner 学术数据在全球范围内遴选过去十年人工智…

BootStrap 模态框禁用空白处点击关闭

转自&#xff08;http://www.cnblogs.com/DayDreamEveryWhere/p/4550320.html&#xff09; 模态框为信息编辑窗口,涉及好多内容,填了半天,若一不小心点了空白处..... $(#myModal).modal({backdrop: static, keyboard: false}); backdrop:static时,空白处不关闭. keyboard:false…

asp.net 2.0中设定默认焦点按钮

在asp.net 1.1中&#xff0c;当要在page_load页面中&#xff0c;设置某个控件为默认的焦点按钮&#xff08;也就是默认焦点是在这个控件上的&#xff09;&#xff0c;可能要用到javascript的代码&#xff0c;而在ASP.NET 2.0中&#xff0c;不用这些麻烦了&#xff0c;在form代码…

(送)Java 架构技术揭秘:Redis+Nginx+Dubbo精选+面试题+精选视频

最近花了很长的时间去搜罗整理Java核心技术好文&#xff0c;我把每个Java核心技术的优选文章都整理成了一个又一个的文档。今天就把这些东西分享给小伙伴们&#xff0c;也能为小伙伴们省去不少麻烦&#xff0c;想学什么技能了&#xff0c;遇到哪方面的问题了 直接打开文档学一学…

Twitter的应急预案、部署流程

2019独角兽企业重金招聘Python工程师标准>>> 《空中之城》事件 在构建Twitter的架构和系统时&#xff0c;我们是以周为单位来确定那些系统的性能的&#xff0c;我们能清楚地知道每个服务维度的系统理论容量&#xff0c;从而尝试去了解整个系统的理论容量。基于这些信…

新产品发布与A轮2000万美元 双喜临门后GrowingIO还要做什么

ZD至顶网CIO与应用频道 06月29日 北京消息&#xff08;文/王聪彬&#xff09;&#xff1a;一个用户一天可能会打开超过12个App&#xff0c;但其中只有3个App的使用时间超过80%。这反映了大多数人使用手机的现状。 透过现象看本质&#xff0c;中国互联网、移动互联网市场既有人口…

gridview列 数字、货币和日期 显示格式

形式语法结果注释数字{0:N2}12.36 数字{0:N0}13 货币{0:c2}$12.36 货币{0:c4}$12.3656 货币"&#xffe5;{0:N2}"&#xffe5;12.36 科学计数法{0:E3}1.23E001 百分数{0:P}12.25%P and p present the same.日期{0:D}2006年11月25日 日期{0:d}2006-11-25 日期{0:f}200…

打造专属BGM,​Python 深度学习教你

作者 | 李秋键头图 | 下载于视觉中国出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;音乐文字&#xff0c;组合食用&#xff0c;效果更佳。引言&#xff1a;“那些听不到音乐的人&#xff0c;以为跳舞的人疯了。” 尼采这句话好有趣&#xff0c;也告诉我们音乐对于日…

XML 特殊字符处理和 CDATA

在处理XML数据时&#xff0c;特殊字符要特殊处理&#xff0c;不能和节点字符混淆。 所有 XML 文档中的文本均会被解析器解析。 只有 CDATA 区段&#xff08;CDATA section&#xff09;中的文本会被解析器忽略。 PCDATA PCDATA 指的是被解析的字符数据&#xff08;Parsed Charac…

zookeeper集群环境搭建

2019独角兽企业重金招聘Python工程师标准>>> 至少3台zookeeper:第一台:con/zoo.cfgtickTime2000 initLimit10 syncLimit5 dataDirC:\\Users\\Administrator\\Desktop\\Zookeepers\\zookeeper-3.4.6.1\\data dataLogDirC:\\Users\\Administrator\\Desktop\\Zookeeper…

ASP.NET遍历配置文件的连接字符串

在ASP.NET 2.0中&#xff0c;提供了更方便的配置文件访问的类&#xff0c;具体可以到 System.Configuration 名称空间下进行查看。本文提供一种在开发过程中常用的得到数据库字符串的方法&#xff0c;为方便使用&#xff0c;写成一个方法进行调用&#xff1a; public string Ge…