二,日历控件_追数日切控件-程序员宅基地

技术标签: date  border  textbox  html  日历  dropdown  

  1. /*------------------------------------------------------------------------
  2.   日期控件
  3.   function Cal_dropdown(edit,min,max)
  4.     弹出日历,可不给参数min和max,参数edit必须有   
  5.   function Cal_datevalid(edit,min,max)
  6.     检查edit中值是否为大于等于min,小于等于max的有效日期格式字符串。
  7.     是则返回 true,否则返回false
  8.     可不给参数min和max(字符串格式)
  9.     参数edit必须有,如果edit无,则必须是:edit为edit和img的父亲(如span、div)的第一个元素
  10.     
  11. */
  12. var Cal_popup = window.createPopup();
  13. var Cal_edit;
  14. var Cal_editdate = new Date();
  15. var Cal_maxdate;
  16. var Cal_mindate;
  17. function Cal_clearTime(thedate)
  18. {
  19.   thedate.setHours(0);
  20.   thedate.setMinutes(0);
  21.   thedate.setSeconds(0);
  22.   thedate.setMilliseconds(0);
  23. }
  24. var Cal_today = new Date();
  25. Cal_clearTime(Cal_today);
  26. //检查日期//
  27. //editctrl:日期控件输入框
  28. // false: 日期错误
  29. function ChkCZDate(editctrl)
  30. {
  31. if(editctrl.value=='')
  32. { alert('请输入日期!')
  33.   editctrl.select();
  34.   editctrl.focus();
  35.   return false;}
  36. if(!Cal_datevalid(editctrl,'1910-1-1','3000-1-1'))
  37. {
  38. alert('日期格式不正确,日期有效范围为1910年到3000年');
  39. editctrl.focus();
  40. return false;
  41. }
  42. else
  43.  return true;
  44. }
  45. function Cal_decDay(thedate,days)
  46. {
  47.   if (!days) days = 1;
  48.   thedate.setTime(thedate - days*24*60*60*1000);
  49. }
  50. function Cal_incMonth(year,month)
  51. {
  52. if (month == 11) {
  53.     month = 0;
  54.     year++;
  55.   } else month++;
  56.   Cal_writeHTML(year,month);
  57. }
  58. function Cal_decMonth(year,month)
  59. {
  60.  if (month == 0) {
  61.     month = 11;
  62.     year--;
  63.   } else month--;
  64.   Cal_writeHTML(year,month);
  65. }
  66. function Cal_decYear(year,month)
  67. {
  68.   Cal_writeHTML(year-1,month);
  69. }
  70. function Cal_incYear(year,month)
  71. {
  72.   Cal_writeHTML(year+1,month);
  73. }
  74. function Cal_writeHTML(theyear,themonth)
  75. {
  76.   var html=
  77.     '<div id="Cal_div1" style="width:231px;FONT-SIZE:9pt;background-color:#fffef5;border:black 1px solid">'+
  78.     '<TABLE style="border-bottom:black 1px solid;FONT-SIZE: 9pt;background-color:#08D74C;color:white;'+
  79.     'padding-top:2px;font-weight:bold;text-align:center" '+
  80.     'cellSpacing="0" cellPadding="0" width="100%" border="0">'+
  81.     '<TR><TD style="cursor:hand" align="left" width=24 οnmοuseοver="this.style.background=' +
  82.     "'#12AFF8';" + '"' + ' οnmοuseοut="this.style.background=' + "'#08D74C';" + '"' +
  83.     ' οnclick="parent.Cal_decYear(' + theyear + ',' + themonth + ');" '+
  84.     '><年</TD>'+
  85.     '<TD style="cursor:hand" align="left" width=24 οnmοuseοver="this.style.background=' +
  86.     "'#12AFF8';" + '"' + ' οnmοuseοut="this.style.background=' + "'#08D74C';" + '"' +
  87.     ' οnclick="parent.Cal_decMonth(' + theyear + ',' + themonth + ');" '+
  88.     '><月</TD>'+
  89.     '<TD align="center">';
  90.     
  91.   html += theyear + '年' + (themonth + 1) + '月</TD>'+
  92.     '<TD style="cursor:hand" align="right" width=24 οnmοuseοver="this.style.background=' +
  93.     "'#12AFF8';" + '"' + ' οnmοuseοut="this.style.background=' + "'#08D74C';" + '"' +
  94.     ' οnclick="parent.Cal_incMonth(' + theyear + ',' + themonth + ');" '+
  95.     '>月></TD>'+
  96.     '<TD style="cursor:hand" align="right" width=24 οnmοuseοver="this.style.background=' +
  97.     "'#12AFF8';" + '"' + ' οnmοuseοut="this.style.background=' + "'#08D74C';" + '"' +
  98.     ' οnclick="parent.Cal_incYear(' + theyear + ',' + themonth + ');" '+
  99.     '>年></TD>';
  100.     
  101.   html +=
  102.     '</TR></TABLE>'+
  103.     '<TABLE style="FONT-SIZE: 9pt;font-weight:bold;text-align:center;border-bottom:black 1px solid" '+
  104.     'cellSpacing="2" cellPadding="0" width="100%" border="0">'+
  105.     '<TR><TD>日</TD><TD>一</TD><TD>二</TD><TD>三</TD><TD>四</TD><TD>五</TD><TD>六</TD>'+
  106.     '</TR></table>'+
  107.     '<TABLE style="FONT-SIZE: 9pt;text-align:center;cursor:hand" cellSpacing="2" '+
  108.     'cellPadding="0" width="100%" border="0">';
  109.   var day1 = new Date(theyear,themonth,1);
  110.   if (day1.getDay()!=0)
  111.   Cal_decDay(day1,day1.getDay()); // 日历开始日
  112. for (var i=1;i<=6;i++) {
  113.     html += '<TR>';
  114. for (var j=1;j<=7;j++) {
  115.       html += '<TD';
  116.       if (day1.getTime()==Cal_today.getTime())
  117.         html += ' style="color:blue"';
  118.       else
  119.       if (day1.getTime()==Cal_editdate.getTime())
  120.         html += ' style="color:red"';
  121.       else
  122.       if (day1.getMonth() != themonth)
  123.         html += ' style="color:#aaaaaa"';
  124.       html += ' οnmοuseοver="this.style.background=' +
  125.               "'#12AFF8';" + '"'+
  126.               ' οnmοuseοut="this.style.background=' +
  127.               "'#fffef5';" + '"';
  128.       html += ' οnclick="parent.Cal_clickday('+day1.getTime() + ');"';
  129.       html +='>' + day1.getDate() + '</TD>';
  130.       Cal_decDay(day1,-1);
  131.     }
  132.     html += '</TR>';
  133.     if (day1.getMonth() != themonth) break;
  134.   }
  135.     
  136.   html +=
  137.     '</TABLE>'+
  138.     '<div style="border-top:black 1px solid;text-align:center;padding:2px">今天是 '+
  139.     '<span style="color:blue;cursor:hand;text-decoration:underline" οnclick="javascript:parent.Cal_clickday('+
  140.     Cal_today.getTime() + ');">'+
  141.     Cal_today.getFullYear() + '-' + (Cal_today.getMonth()+1) + '-' + Cal_today.getDate() +
  142.     '</span></div>'+
  143.     '</div>';
  144.   Cal_popup.document.body.innerHTML = html;
  145.   if (Cal_popup.isOpen) // 重新调整显示高度
  146.     Cal_popup.show(0, Cal_edit.offsetHeight, 231, Cal_popup.document.all("Cal_div1").offsetHeight,Cal_edit);
  147. }
  148. // 字符串转换为日期
  149. function Cal_strtodate(str)
  150. {
  151.   var date = Date.parse(str);
  152.  if (isNaN(date)) {
  153.     date = Date.parse(str.replace(/-/g,"/")); // 识别日期格式:YYYY-MM-DD
  154.     if (isNaN(date)) date = 0;
  155.   }
  156.   return(date);
  157. }
  158. //返回日期间相差的天数
  159. function Cal_DateDiff(Date1, Date2)
  160. {
  161.     return (Date2-Date1)/(24*60*60*1000);
  162. }
  163. //返回日期间相差的月数(最大误差小于一个月)
  164. function Cal_MonthDiff(DateA, DateB)
  165. {
  166.     Date1=new Date();
  167.     Date2=new Date();
  168.     Date1.setTime(DateA);
  169.     Date2.setTime(DateB);
  170.     months = (Date2.getFullYear() - Date1.getFullYear()) * 12;
  171.     addmonths = Date2.getMonth() - Date1.getMonth();
  172.     months = months + addmonths;
  173.     if(Date2.getDate() < Date1.getDate())
  174.         months--;
  175.     return months;
  176. }
  177. // 弹出日历,可不给参数min和max,参数edit必须有
  178. function Cal_dropdown(edit,min,max) {
  179. if (!edit) {
  180.     edit = window.event.srcElement.parentElement.children(0);
  181.     if ((!edit.type) || (edit.type.toLowerCase() != "text")) return;
  182.   }
  183.   Cal_edit = edit;
  184.   var date = Cal_strtodate(edit.value);
  185.   if (date == 0) date = Cal_today.getTime();
  186.   if (max) Cal_maxdate = Cal_strtodate(max);
  187.   else Cal_maxdate=0;
  188.   if (min) Cal_mindate = Cal_strtodate(min);
  189.   else Cal_mindate = 0;
  190.   Cal_editdate.setTime(date);
  191.   Cal_writeHTML(Cal_editdate.getFullYear(),Cal_editdate.getMonth());
  192.   Cal_popup.show(0, edit.offsetHeight, 231, 149,edit);
  193.   Cal_popup.show(0, edit.offsetHeight, 231, Cal_popup.document.all("Cal_div1").offsetHeight,edit);
  194. }
  195. // 点击日期
  196. function Cal_clickday(day,edit)
  197. {
  198.   if (Cal_maxdate != 0) day = Math.min(day,Cal_maxdate);
  199.   day = Math.max(day,Cal_mindate);
  200.   Cal_editdate.setTime(day);
  201.   var im;
  202.   var id;
  203.   if ((Cal_editdate.getMonth()+1)<10)
  204.   {
  205.    im = Cal_editdate.getMonth()+1;
  206.    im = '0' + im;
  207.   }
  208.   else
  209.    im = Cal_editdate.getMonth()+1;
  210.   if ((Cal_editdate.getDate())<10)
  211.    id = "0"+Cal_editdate.getDate();
  212.   else
  213.    id = Cal_editdate.getDate();
  214.   Cal_edit.value = Cal_editdate.getFullYear() + "-" + im + "-"
  215.                    + id;
  216.   Cal_popup.hide();
  217.   Cal_edit.fireEvent("onkeydown");
  218.   Cal_edit.focus();
  219. }
  220. function Cal_datevalid(edit,min,max)
  221. {
  222.   // 检查edit中值是否为大于等于min,小于等于max的有效日期格式字符串。
  223.   var date = Cal_strtodate(edit.value);
  224.   if (date == 0) return false;
  225.   if (max) {
  226.     var max = Cal_strtodate(max);
  227.     if ((max!=0)&&(date>max)) return false;
  228.   }
  229.    if (min) {
  230.     var min = Cal_strtodate(min);
  231.     if ((min!=0)&&(date<min)) return false;
  232.   }
  233.   date = new Date(date);
  234.   edit.value = date.getFullYear() + "-" + (date.getMonth()+1) +
  235.                "-" + date.getDate();
  236.   return true;
  237. }

<asp:textbox id="dtOpenTime" runat="server" Width="100px" visible="True" ></asp:textbox>
               <img src="img/calendar.gif" alt="打开日历" id="imgdtOpenTimeDate" style="CURSOR: hand;" οnclick="javascript:Cal_dropdown(dtOpenTime)" />

 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shibaozhao/article/details/3035769

智能推荐

gossip-程序员宅基地

文章浏览阅读55次。celebrity ----a famous peopleobama ---- politicatonobject ----反对转载于:https://www.cnblogs.com/shenfengok/archive/2012/07/11/2586893.html

在linux中使用setns()设置pid namespace-程序员宅基地

文章浏览阅读3.1k次。以下代码展示了 setns() 的用法,#define _GNU_SOURCE#include <fcntl.h>#include <sched.h>#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <sys/types.h>#include <sys/wait.h>#in_setns

可逆矩阵性质总结_线性代数下的行列式和矩阵-程序员宅基地

文章浏览阅读5.7k次。实际意义求线性方程组线性方程组一般有 m 个常数项,n 个未知数,m * n 个系数。若常数项全为 0 ,则为齐次线性方程组;若未知数全为 0 ,则称为零解。于是我们考虑的问题是:齐次方程组:是否存在非零解,以及存在的条件通解的结构与性质解法非齐次方程组:是否有解,以及有解的条件是什么有多少解以及对应解数量的条件是什么多解的结构与性质解法行列式二,三阶行列式行列式最初的作用就是求解线性方程组!例如..._可逆矩阵一定是实数矩阵吗

centos8的80端口不通问题记录_为什么keepalived连不上本地的80端口-程序员宅基地

文章浏览阅读5.2k次。1、首先是安装了nginx并启动了服务,查看80端口正常listening2、通过其他机器访问网页无法连接,查看telnet到80端口也不通。初步怀疑跟防火墙有关3、查看iptables,发现有部分默认规则,但都是accept。默认的filter表也都是accept,尝试用iptables -F清空规则表后问题依旧4、之前使用的是ubuntu系统,主要通过的就是iptables来控制..._为什么keepalived连不上本地的80端口

Mysql5.7安装 Gtid原理作用+主从复制_gtid在主从复制的作用-程序员宅基地

文章浏览阅读1.3k次,点赞4次,收藏3次。Gtid的作用Gtid,采用了新的复制协议,旧协议是,首先从服务器上在一个特定的偏移量位置连接到主服务器上一个给定的二进制日志文件,然后主服务器再从给定的连接点开始发送所有的事件。新协议有所不同,支持以全局统一事务ID(GTID)为基础的复制。当在主库上提交事务或者被从库应用时,可以定位和追踪每一个事务。GTID复制是全部以事务为基础,使得检查主从一致性变得非常简单。如果所有主库上提交的事务也同样提交到从库上,一致性就得到了保证。Gtid的工作原理1.当一个事务在主库端执行并提交时,产生GTID,一_gtid在主从复制的作用

Java 单例模式浅析_单例模式论文-程序员宅基地

文章浏览阅读229次。提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码_单例模式论文

随便推点

RPN 区域选取网络 region proposal network_region proposal networks ( rpn )翻译-程序员宅基地

文章浏览阅读663次。转:懒人元(侵删) 注:转自其他博客,仅供学习参考。  RPN全称是Region Proposal Network,RegionProposal的中文意思是“区域选取”,也就是“提取候选框”的意思,所以RPN就是用来提取候选框的网络。1. RPN的意义  RPN第一次出现在世人眼中是在Faster RCNN这个结构中,专门用来提取候选框,在RCNN和Fast RCNN等物体检测架构中,用来提取候选框的方法通常是Selective Search,是比较传统的方法,而且比较耗时,在CPU上要2s一.._region proposal networks ( rpn )翻译

stm32正常运行流程图_STM32单片机的基础知识77条!这个要收藏一下哦-程序员宅基地

文章浏览阅读1.5k次。1、 SYSCLK时钟源有三个来源:HSI RC、HSE OSC、PLL2、 MCO[2:0]可以提供4源不同的时钟同步信号,PA83、 GPIO口有两个反向串联的二极管用作钳位二极管。4、 ICode总线,DCode总线、系统总线、DMA总线、总线矩阵、AHB/APB桥5、在使用一个外设之前,必须设置寄存器RCC_AHBENR来打开该外设的时钟6、STM32复位有三种:系统复位、上电复位、备份区..._stm32主程序流程图

无处 不在的无线智能——6g 的关键驱动与研究挑战_一文看懂什么是 6G - 6G,5G-程序员宅基地

文章浏览阅读106次。2020年行将结束,随着5G网络的建设推进,以及3GPP R16版本的冻结,越来越多的人将关注焦点转移到6G身上。7月14日,韩国三星电子发布了白皮书《下一代超连接体验》。在白皮书中,三星预估6G标准完成及投入商业化的最早时间点是2028年,而大规模商业化可能发生在2030年左右。这个预测时间点,和3月17日全球第二届6G Wireless Summit会议上中兴通讯给出的预测时间点非常接近:从社..._6g无线智能无处不在的关键驱动与研究挑战

安装caffe过程中出现libtbb.so.2 undefined reference error_//usr/lib/x86_64-linux-gnu/libtbb.so.2:对‘__cxa_ini-程序员宅基地

文章浏览阅读768次。caffe 包是从caffe的github官网上下载的https://github.com/BVLC/caffe我是准备安装openpose的,之后按照网上的流程来,可是不管怎么安装依赖项以及修改make.config都卡在最后了[ 4%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/blocking_queue.cpp.o[ 5%] Linking CXX shared library ../../lib/lib_//usr/lib/x86_64-linux-gnu/libtbb.so.2:对‘__cxa_init_primary_exception@cxxa

会议室电脑怎么无线投屏_会议室无线投屏-程序员宅基地

文章浏览阅读1k次。会议室电脑怎么无线投屏?尤其是远程会议电脑如何无线投屏,可能觉得市场上多如牛毛的投屏器就可以解决这个问题。事实上,投屏器真的可以做到无线投屏电脑吗?一些企业需要召开远程会议,这样可以节省会议成本。演示的会议内容需要多地同屏,比如政府部门,银行等分支机构较多的单位,投屏器是否有这么庞大的数据传输能力;应用开发团队,需要轮流切换不同的电脑和连接设备,接口和分辨率等兼容问题,要反复调试严重影响会议进度;做产品设计演示时让团队成员可以更直观地看到设计稿。这些小问题是企业协同办公中不可忽视的痛点,部署连通宝多屏互_会议室无线投屏

JavaScript绑定this-程序员宅基地

文章浏览阅读42次。问题描述var a = { one: 1, haha() { console.log(this.one) }}setTimeout(a.haha, 1000)在上例中,函数haha引用了this.one,而定时器结束之后调用的haha传入的this并不是a,输出结果this.one是未定义变量。方法一:使用箭头函数的方式设置回调var ...