<!--<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=' ';" +
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 + "><<</td>";
154 output += " <td style=\"" + arrowStyle + "\" align=left title=\"上个月\"" + pmEvent + "><</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 + ">></td>";
159 output += " <td style=\"" + arrowStyle + "\" title=\"下一年\"" + nyEvent + ">>></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 + "\"> </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”显然是一个JavaScript实现的日历控件集合,适用于网页开发。下面我们将深入探讨日历控件的原理、使用场景以及JavaScript实现的相关知识点。 一、日历控件的基本概念 日历控件,也称为日期...
"最简洁好用的日历控件js代码"是针对这种需求的一种解决方案,它提供了易用且功能丰富的日期选择功能。 首先,日历控件的本地化是一个重要的特性,描述中提到原本的控件是英文版,但经过修改已经适配为中文,这意味...
总的来说,JavaScript日历控件是网页交互中不可或缺的一部分,它的实现涉及前端多个技术层面,从基础的HTML/CSS/JS到复杂的库使用和性能优化。理解其工作原理并灵活运用,能帮助开发者创建出更高效、更易用的网页...
"带提示层和农历的日历控件js" 是一个专为JavaScript环境设计的组件,它不仅提供基本的日历功能,还具备农历显示以及提示层功能,使得用户在处理日期时更为方便。 首先,我们要理解"日历js"是什么。日历JS是一种...
《日历控件JS实现详解——以My97DatePicker为例》 日历控件在网页设计中扮演着重要角色,它为用户提供了一种方便的方式来选择日期,常见于表单填写、事件安排等场景。JavaScript(简称JS)作为前端开发的重要语言,...
为了提供用户友好的体验,"常用表单填入日期使用日历控件JS" 提供了一种解决方案,它利用JavaScript创建了一个功能强大且兼容性良好的日历组件。这个组件能够帮助用户在填写表单时方便地选取日期,而不是手动输入,...
在提供的文件名中,"calendar.html"可能是包含日历控件的HTML页面,而"iptext.js"很可能是用来实现日历功能的JavaScript脚本。通过分析这两个文件,我们可以深入了解这个日历控件的具体实现细节,包括具体的DOM操作...
标题中的".net点击弹出日历控件js代码"指的是在.NET开发环境中,通过JavaScript(JS)实现一个功能,即当用户在TextBox文本框中点击时,能够自动弹出一个日历选择器,帮助用户方便地选取日期。这种方式通常用于增强...
"日历控件 js" 指的是使用 JavaScript 语言实现的这种功能。JavaScript,作为前端开发的主要语言,能够动态地更新页面内容,因此创建交互式的日历控件是其典型应用之一。 日历控件的实现通常包括以下几个关键部分:...
本篇文章将详细讲解一个特定的日历控件,它基于JavaScript(js)语言,并且支持选择时分秒,适用于那些需要精确时间选择的应用场景。 首先,我们来理解“日历控件”的概念。日历控件是网页中的一个交互元素,它以...
JavaScript(JS)日历控件是网页开发中常用的一种组件,用于展示日期选择功能,通常在表单中作为输入辅助工具出现。它们可以提供用户友好的界面,方便用户选择日期,而无需手动输入。以下是对JS日历控件的一些详细...
"很实用的日历控件JS"是一个专为JavaScript环境设计的高效且易用的日历组件,允许开发者快速集成到自己的项目中,提供灵活的定制选项。 这个日历控件的核心功能包括: 1. **直接引用**:开发者只需简单地在网页中...
JavaScript(简称JS)日历控件是Web开发中常见的一种组件,它允许用户在网页上方便地选择日期,常用于表单输入、事件预订或时间安排等场景。本篇文章将详细探讨JavaScript日历控件的设计原理、实现方式以及常见的...
从给定的文件标题、描述、标签以及部分内容中,我们可以提炼出关于“兼容FF和IE的日历控件JS”的详细知识点。以下是对这些知识点的深入解析: ### 标题:“兼容ff和ie的日历控件 js” #### 知识点1:兼容性问题 ...
本文将深入探讨“日历控件”的概念、应用及其在JavaScript中的实现,结合提供的“日历控件”压缩包,我们来详细讨论这个主题。 一、日历控件简介 日历控件是网页或者应用程序中用于显示和选择日期的组件。用户可以...
日历控件JS,顾名思义,是使用JavaScript语言编写的用于在网页上展示日历的组件。JavaScript,作为客户端脚本语言,可以在用户的浏览器上运行,提供动态交互功能。日历控件通过JavaScript不仅可以创建动态的界面效果...
在JavaScript编程中,日历控件是一种常见的交互元素,用于用户选择日期或设定时间。"js日历控件优化"的焦点在于提升用户体验、性能以及兼容性,使其更易用且适应不同场景。这里我们将深入探讨如何优化JavaScript日历...
JavaScript实现日历控件的步骤可能包括: 1. **HTML布局**:创建基本的HTML结构,包括按钮触发日历弹出和展示日期的输入框。 2. **CSS样式**:定义日历的外观,包括颜色、大小和布局。 3. **JavaScript逻辑**:编写...
"日历控件"是JavaScript应用中的常见组件,主要用于用户选择日期,常见于事件安排、预约系统或日期输入等场景。"calendar"这个标签表明我们将讨论的是一个特定的日历实现。 这篇描述提到了一个“漂亮的日历控件”,...