`

日历控件 (js)

阅读更多

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->   1 
  2 //////////////////////////////
  3 // UncCalendar 1.0          //
  4 // Author: Zhong@UNC        //
  5 // E-mail: zhong@uncnet.com //
  6 // 06/01/2004               //
  7 //////////////////////////////
  8 
  9 
 10 
 11 function UncCalendar (sName, sDate)
 12 {
 13   /////////////////////////////////////////////////////////////////////////
 14   //定义UncCalendar对象的属性并赋默认值。
 15   //inputValue属性的值为"today"时表示(客户机)当前日期。
 16   //直接在这里把默认值修改成你想要的,使用时你就什么也不用设置了。
 17   this.inputName = sName || "uncDate";
 18   this.inputValue = sDate || "";
 19   this.inputSize = 10;
 20   this.inputClass = "";
 21   this.color = "#333333";
 22   this.bgColor = "#EEEEEE";
 23   this.buttonWidth = 60;
 24   this.buttonWords = "选择日期";
 25   this.canEdits = true;
 26   this.hidesSelects = true;
 27   /////////////////////////////////////////////////////////////////////////
 28 
 29   /////////////////////////////////////////////////////////////////////////
 30   //定义display方法。
 31   this.display = function ()
 32   {
 33     var reDate = /^(19[7-9]\d|20[0-5]\d)\-(0?\d|1[0-2])\-([0-2]?\d|3[01])$/;
 34     if (reDate.test(this.inputValue))
 35     {
 36       var dates = this.inputValue.split("-");
 37       var year = parseInt(dates[0], 10);
 38       var month = parseInt(dates[1], 10);
 39       var mday = parseInt(dates[2], 10);
 40     }
 41     else
 42     {
 43       var today = new Date();
 44       var year = today.getFullYear();
 45       var month = today.getMonth()+1;
 46       var mday = today.getDate();
 47     }
 48     if (this.inputValue == "today")
 49       inputValue = year + "-" + month + "-" + mday;
 50     else
 51       inputValue = this.inputValue;
 52     var lastDay = new Date(year, month, 0);
 53     lastDay = lastDay.getDate();
 54     var firstDay = new Date(year, month-1, 1);
 55     firstDay = firstDay.getDay();
 56     
 57     var btnBorder =
 58       "border-left:1px solid " + this.color + ";" +
 59       "border-right:1px solid " + this.color + ";" +
 60       "border-top:1px solid " + this.color + ";" +
 61       "border-bottom:1px solid " + this.color + ";";
 62     var btnStyle =
 63       "padding-top:3px;cursor:default;width:" + this.buttonWidth + "px;text-align:center;height:18px;top:-9px;" +
 64       "font:normal 12px 宋体;position:absolute;z-index:99;background-color:" + this.bgColor + ";" +
 65       "line-height:12px;" + btnBorder + "color:" + this.color + ";";
 66     var boardStyle = 
 67       "position:absolute;width:1px;height:1px;background:" + this.bgColor + ";top:8px;border:1px solid "+
 68       this.color + ";display:none;padding:3px;";
 69     var buttonEvent =
 70       " onmouseover=\"this.childNodes[0].style.borderBottom='0px';" + 
 71           "this.childNodes[1].style.display='';this.style.zIndex=100;" +
 72           (this.hidesSelects ?
 73           "var slts=document.getElementsByTagName('SELECT');" +
 74           "for(var i=0;i<slts.length;i++)slts[i].style.visibility='hidden';"
 75           : "") + "\"" +
 76       " onmouseout=\"this.childNodes[0].style.borderBottom='1px solid " + this.color + "';" +
 77           "this.childNodes[1].style.display='none';this.style.zIndex=99;" +
 78           (this.hidesSelects ?
 79           "var slts=document.getElementsByTagName('SELECT');" +
 80           "for(var i=0;i<slts.length;i++)slts[i].style.visibility='';"
 81           : "") + "\"" +
 82       " onselectstart=\"return false;\"";
 83     var mdayStyle = "font:normal 9px Verdana,Arial,宋体;line-height:12px;cursor:default;color:" + this.color;
 84     var weekStyle = "font:normal 12px 宋体;line-height:15px;cursor:default;color:" + this.color;
 85     var arrowStyle = "font:bold 7px Verdana,宋体;cursor:hand;line-height:16px;color:" + this.color;
 86     var ymStyle = "font:bold 12px 宋体;line-height:16px;cursor:default;color:" + this.color;
 87     var changeMdays 
 88       "var year=parseInt(this.parentNode.cells[2].childNodes[0].innerText);" +
 89       "var month=parseInt(this.parentNode.cells[2].childNodes[2].innerText);" +
 90       "var firstDay=new Date(year,month-1,1);firstDay=firstDay.getDay();" +
 91       "var lastDay=new Date(year,month,0);lastDay=lastDay.getDate();" +
 92       "var tab=this.parentNode.parentNode, day=1;" +
 93       "for(var row=2;row<8;row++)" +
 94       "  for(var col=0;col<7;col++){" +
 95       "    if(row==2&&col<firstDay){" +
 96       "      tab.rows[row].cells[col].innerHTML='&nbsp;';" +
 97       "      tab.rows[row].cells[col].isDay=0;}" +
 98       "    else if(day<=lastDay){" +
 99       "      tab.rows[row].cells[col].innerHTML=day;" +
100       "      tab.rows[row].cells[col].isDay=1;day++;}" +
101       "    else{" +
102       "      tab.rows[row].cells[col].innerHTML='';" +
103       "      tab.rows[row].cells[col].isDay=0;}" +
104       "  }";
105     var pyEvent =
106       " onclick=\"var y=this.parentNode.cells[2].childNodes[0];y.innerText=parseInt(y.innerText)-1;" +
107                   changeMdays + "\"";
108     var pmEvent =
109       " onclick=\"var y=this.parentNode.cells[2].childNodes[0];m=this.parentNode.cells[2].childNodes[2];" +
110                  "m.innerText=parseInt(m.innerText)-1;if(m.innerText=='0'){m.innerText=12;y.innerText=" +
111                  "parseInt(y.innerText)-1;}" + changeMdays + "\"";
112     var nmEvent =
113       " onclick=\"var y=this.parentNode.cells[2].childNodes[0];m=this.parentNode.cells[2].childNodes[2];" +
114                  "m.innerText=parseInt(m.innerText)+1;if(m.innerText=='13'){m.innerText=1;y.innerText=" +
115                  "parseInt(y.innerText)+1;}" + changeMdays + "\"";
116     var nyEvent =
117       " onclick=\"var y=this.parentNode.cells[2].childNodes[0];y.innerText=parseInt(y.innerText)+1;" +
118                   changeMdays + "\"";
119     var mdayEvent =
120       " onmouseover=\"if(event.srcElement.tagName=='TD'&&event.srcElement.isDay){" +
121           "event.srcElement.style.backgroundColor='" + this.color + "';" +
122           "event.srcElement.style.color='" + this.bgColor + "';" +
123           "event.srcElement.style.cursor='hand';" +
124           "var ym=event.srcElement.parentNode.parentNode.rows[0].cells[2].childNodes;" +
125           "event.srcElement.title=ym[0].innerText+'-'+ym[2].innerText+'-'+event.srcElement.innerText;}\"" +
126       " onmouseout=\"if(event.srcElement.tagName=='TD'&&event.srcElement.isDay){" +
127           "event.srcElement.style.backgroundColor='" + this.bgColor + "';" +
128           "event.srcElement.style.color='" + this.color + "';" +
129           "event.srcElement.style.cursor='default';" +
130           "var ym=event.srcElement.parentNode.parentNode.rows[0].cells[2].childNodes;" +
131           "event.srcElement.title=ym[0].innerText+'-'+ym[2].innerText+'-'+event.srcElement.innerText;}\"" +
132       " onclick=\"if(event.srcElement.tagName=='TD'&&event.srcElement.isDay){" +
133           "var inp=this.parentNode.parentNode.parentNode.previousSibling.childNodes[0];" +
134           "inp.value=this.rows[0].cells[2].childNodes[0].innerText+'-'+this.rows[0].cells[2].childNodes[2]." +
135           "innerText+'-'+event.srcElement.innerText;" +
136           "this.parentNode.style.display='none';this.parentNode.parentNode.style.zIndex=99;" +
137           "this.parentNode.previousSibling.style.borderBottom='1px solid " + this.color + "';" +
138           (this.hidesSelects ?
139           "var slts=document.getElementsByTagName('SELECT');" +
140           "for(var i=0;i<slts.length;i++)slts[i].style.visibility='';"
141           : "") + "}\"";
142 
143     var output = "";
144     output += "<table cellpadding=0 cellspacing=1 style='display:inline;'><tr>";
145     output += "  <td><input size=" + this.inputSize + " maxlength=10 value=\"" + inputValue + "\"";
146     output +=    (this.canEdits ? "" : " readonly") + " name=\"" + this.inputName + "\"></td>";
147     output += "  <td width=" + this.buttonWidth + ">";
148     output += "    <div style=\"position:absolute;overflow:visible;width:0px;height:0px;\"" + buttonEvent + ">";
149     output += "      <div style=\"" + btnStyle + "\"><nobr>" + this.buttonWords + "</nobr></div>";
150     output += "      <div style=\"" + boardStyle + "\">";
151     output += "        <table cellspacing=1 cellpadding=1 width=175" + mdayEvent + ">";
152     output += "          <tr height=20 align=center>";
153     output += "            <td style=\"" + arrowStyle + "\" title=\"上一年\"" + pyEvent + ">&lt;&lt;</td>";
154     output += "            <td style=\"" + arrowStyle + "\" align=left title=\"上个月\"" + pmEvent + ">&lt;</td>";
155     output += "            <td colspan=3 style=\"" + ymStyle + "\" valign=bottom>";
156     output += "              <span>" + year + "</span><span></span><span>" + month + "</span><span></span>";
157     output += "            </td>";
158     output += "            <td style=\"" + arrowStyle + "\" align=right title=\"下个月\"" + nmEvent + ">&gt;</td>";
159     output += "            <td style=\"" + arrowStyle + "\" title=\"下一年\"" + nyEvent + ">&gt;&gt;</td>";
160     output += "          </tr>";
161     output += "          <tr height=20 align=center bgcolor=" + this.bgColor + ">";
162     output += "            <td width=14% style=\"" + weekStyle + "\"></td>";
163     output += "            <td width=14% style=\"" + weekStyle + "\"></td>";
164     output += "            <td width=14% style=\"" + weekStyle + "\"></td>";
165     output += "            <td width=14% style=\"" + weekStyle + "\"></td>";
166     output += "            <td width=14% style=\"" + weekStyle + "\"></td>";
167     output += "            <td width=14% style=\"" + weekStyle + "\"></td>";
168     output += "            <td width=14% style=\"" + weekStyle + "\"></td>";
169     output += "          </tr>";
170     var day = 1;
171     for (var row=0; row<6; row++)
172     {
173       output += "<tr align=center>";
174       for (var col=0; col<7; col++)
175       {
176         if (row == 0 && col < firstDay)
177           output += "<td style=\"" + mdayStyle + "\">&nbsp;</td>";
178         else if (day <= lastDay)
179         {
180           output += "<td style=\"" + mdayStyle + "\" isDay=1>" + day + "</td>";
181           day++;
182         }
183         else
184           output += "<td style=\"" + mdayStyle + "\"></td>";
185       }
186       output += "</tr>";
187     }
188     output += "        </table>";
189     output += "      </div>";
190     output += "    </div>";
191     output += "  </td>";
192     output += "</tr></table>";
193     document.write(output);
194   }
195   /////////////////////////////////////////////////////////////////////////
196 }
HTML:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1 <script src=uc.js></script>
 2 <script language=javascript>
 3 //拿过来就可以用,很简单。
 4 //实例化时第一个参数是input的name;第二个参数是value,设为"today"就是当天。
 5   var date1 = new UncCalendar ("date""2008-08-08");
 6   date1.display();
 7 </script>
 8 <br><br>
 9 <script language=javascript>
10 //有一些属性,可以灵活的定制。
11 //事实上直接到uc.js中修改默认属性值使用起来会更方便一些,里面有注释。
12   var date2 = new UncCalendar ();
13   date2.inputName = "date"//input的name。
14   date2.inputValue = "today";  //你会看到,input中将显示客户机系统当前时间。
15   date2.inputSize = 10;  //input的size
16   date2.inputClass = "";  //input的class,这样你就能自己控制input的样式。
17   date2.color = "#000080";  //选择按钮、面板的边框以及日历中字的颜色。
18   date2.bgColor = "#EEEEFF";  //选择按钮、面板的背景色。
19   date2.buttonWidth = 60;  //按钮宽度
20   date2.buttonWords = "background-color: rgb(245,
分享到:
评论

相关推荐

    日历控件js

    本资源包“日历控件js”显然是一个JavaScript实现的日历控件集合,适用于网页开发。下面我们将深入探讨日历控件的原理、使用场景以及JavaScript实现的相关知识点。 一、日历控件的基本概念 日历控件,也称为日期...

    最简洁好用的日历控件js代码

    "最简洁好用的日历控件js代码"是针对这种需求的一种解决方案,它提供了易用且功能丰富的日期选择功能。 首先,日历控件的本地化是一个重要的特性,描述中提到原本的控件是英文版,但经过修改已经适配为中文,这意味...

    js日历控件 js日历控件

    总的来说,JavaScript日历控件是网页交互中不可或缺的一部分,它的实现涉及前端多个技术层面,从基础的HTML/CSS/JS到复杂的库使用和性能优化。理解其工作原理并灵活运用,能帮助开发者创建出更高效、更易用的网页...

    带提示层和农历的日历控件js

    "带提示层和农历的日历控件js" 是一个专为JavaScript环境设计的组件,它不仅提供基本的日历功能,还具备农历显示以及提示层功能,使得用户在处理日期时更为方便。 首先,我们要理解"日历js"是什么。日历JS是一种...

    日历控件js控件

    《日历控件JS实现详解——以My97DatePicker为例》 日历控件在网页设计中扮演着重要角色,它为用户提供了一种方便的方式来选择日期,常见于表单填写、事件安排等场景。JavaScript(简称JS)作为前端开发的重要语言,...

    常用表单填入日期使用日历控件JS

    为了提供用户友好的体验,"常用表单填入日期使用日历控件JS" 提供了一种解决方案,它利用JavaScript创建了一个功能强大且兼容性良好的日历组件。这个组件能够帮助用户在填写表单时方便地选取日期,而不是手动输入,...

    html js脚本日历控件

    在提供的文件名中,"calendar.html"可能是包含日历控件的HTML页面,而"iptext.js"很可能是用来实现日历功能的JavaScript脚本。通过分析这两个文件,我们可以深入了解这个日历控件的具体实现细节,包括具体的DOM操作...

    .net点击弹出日历控件js代码

    标题中的".net点击弹出日历控件js代码"指的是在.NET开发环境中,通过JavaScript(JS)实现一个功能,即当用户在TextBox文本框中点击时,能够自动弹出一个日历选择器,帮助用户方便地选取日期。这种方式通常用于增强...

    日历控件 js

    "日历控件 js" 指的是使用 JavaScript 语言实现的这种功能。JavaScript,作为前端开发的主要语言,能够动态地更新页面内容,因此创建交互式的日历控件是其典型应用之一。 日历控件的实现通常包括以下几个关键部分:...

    日历控件 js 支持时分秒 支持到日期

    本篇文章将详细讲解一个特定的日历控件,它基于JavaScript(js)语言,并且支持选择时分秒,适用于那些需要精确时间选择的应用场景。 首先,我们来理解“日历控件”的概念。日历控件是网页中的一个交互元素,它以...

    6个JS日历控件个JS日历控件

    JavaScript(JS)日历控件是网页开发中常用的一种组件,用于展示日期选择功能,通常在表单中作为输入辅助工具出现。它们可以提供用户友好的界面,方便用户选择日期,而无需手动输入。以下是对JS日历控件的一些详细...

    很实用的日历控件JS

    "很实用的日历控件JS"是一个专为JavaScript环境设计的高效且易用的日历组件,允许开发者快速集成到自己的项目中,提供灵活的定制选项。 这个日历控件的核心功能包括: 1. **直接引用**:开发者只需简单地在网页中...

    js日历控件js日历控件

    JavaScript(简称JS)日历控件是Web开发中常见的一种组件,它允许用户在网页上方便地选择日期,常用于表单输入、事件预订或时间安排等场景。本篇文章将详细探讨JavaScript日历控件的设计原理、实现方式以及常见的...

    兼容ff和ie的日历控件 js

    从给定的文件标题、描述、标签以及部分内容中,我们可以提炼出关于“兼容FF和IE的日历控件JS”的详细知识点。以下是对这些知识点的深入解析: ### 标题:“兼容ff和ie的日历控件 js” #### 知识点1:兼容性问题 ...

    日历控件完整代码

    本文将深入探讨“日历控件”的概念、应用及其在JavaScript中的实现,结合提供的“日历控件”压缩包,我们来详细讨论这个主题。 一、日历控件简介 日历控件是网页或者应用程序中用于显示和选择日期的组件。用户可以...

    js日历控件日历控件

    日历控件JS,顾名思义,是使用JavaScript语言编写的用于在网页上展示日历的组件。JavaScript,作为客户端脚本语言,可以在用户的浏览器上运行,提供动态交互功能。日历控件通过JavaScript不仅可以创建动态的界面效果...

    js日历控件优化

    在JavaScript编程中,日历控件是一种常见的交互元素,用于用户选择日期或设定时间。"js日历控件优化"的焦点在于提升用户体验、性能以及兼容性,使其更易用且适应不同场景。这里我们将深入探讨如何优化JavaScript日历...

    带时间的日历控件js特效

    JavaScript实现日历控件的步骤可能包括: 1. **HTML布局**:创建基本的HTML结构,包括按钮触发日历弹出和展示日期的输入框。 2. **CSS样式**:定义日历的外观,包括颜色、大小和布局。 3. **JavaScript逻辑**:编写...

    js 日历控件 calendar 漂亮日历控件

    "日历控件"是JavaScript应用中的常见组件,主要用于用户选择日期,常见于事件安排、预约系统或日期输入等场景。"calendar"这个标签表明我们将讨论的是一个特定的日历实现。 这篇描述提到了一个“漂亮的日历控件”,...

Global site tag (gtag.js) - Google Analytics