JavaScript极品小日历

代码如下:

[Ctrl+A 全选 提示:你可先修改部分代码,再点运行代码]

其中用到一个Calendar.js文件代码如下:

  1 document.write( " <div id=meizzCalendarLayer style='position: absolute; z-index: 9999; width: 144; height: 193; display: none'> " );
  2 document.write( " <iframe name=meizzCalendarIframe scrolling=no frameborder=0 width=100% height=100%></iframe></div> " );
  3 function  writeIframe(){
  4          var  strIframe  =   " <html><head><meta http-equiv='Content-Type' content='text/html; charset=gb2312'><style> " +
  5      " *{font-size: 12px; font-family: 宋体} " +
  6      " .bg{  color:  " +  WebCalendar.lightColor  + " ; cursor: default; background-color:  " +  WebCalendar.darkColor  + " ;} " +
  7      " table#tableMain{ width: 142; height: 180;} " +
  8      " table#tableWeek td{ color:  " +  WebCalendar.lightColor  + " ;} " +
  9      " table#tableDay  td{ font-weight: bold;} " +
 10      " td#meizzYearHead, td#meizzYearMonth{color:  " +  WebCalendar.wordColor  + " } " +
 11      " .out { text-align: center; border-top: 1px solid  " +  WebCalendar.DarkBorder  + " ; border-left: 1px solid  " +  WebCalendar.DarkBorder  + " ; " +
 12      " border-right: 1px solid  " +  WebCalendar.lightColor  + " ; border-bottom: 1px solid  " +  WebCalendar.lightColor  + " ;} " +
 13      " .over{ text-align: center; border-top: 1px solid #FFFFFF; border-left: 1px solid #FFFFFF; " +
 14      " border-bottom: 1px solid  " +  WebCalendar.DarkBorder  + " ; border-right: 1px solid  " +  WebCalendar.DarkBorder  + " } " +
 15      " input{ border: 1px solid  " +  WebCalendar.darkColor  + " ; padding-top: 1px; height: 18; cursor: hand; " +
 16      "        color: " +  WebCalendar.wordColor  + " ; background-color:  " +  WebCalendar.btnBgColor  + " } " +
 17      " </style></head><body onselectstart='return false' style='margin: 0px' οncοntextmenu='return false'><form name=meizz> " ;
 18      if  (WebCalendar.drag){ strIframe  +=   " <scr " + " ipt language=javascript> " +
 19      " var drag=false, cx=0, cy=0, o = parent.WebCalendar.calendar; function document.onmousemove(){ " +
 20      " if(parent.WebCalendar.drag && drag){if(o.style.left=='')o.style.left=0; if(o.style.top=='')o.style.top=0; " +
 21      " o.style.left = parseInt(o.style.left) + window.event.clientX-cx; " +
 22      " o.style.top  = parseInt(o.style.top)  + window.event.clientY-cy;}} " +
 23      " function document.onkeydown(){ switch(window.event.keyCode){  case 27 : parent.hiddenCalendar(); break; " +
 24      " case 37 : parent.prevM(); break; case 38 : parent.prevY(); break; case 39 : parent.nextM(); break; case 40 : parent.nextY(); break; " +
 25      " case 84 : document.forms[0].today.click(); break;} window.event.keyCode = 0; window.event.returnValue= false;} " +
 26      " function dragStart(){cx=window.event.clientX; cy=window.event.clientY; drag=true;}</scr " + " ipt> " }
 27     strIframe  +=   " <select name=tmpYearSelect  οnblur='parent.hiddenSelect(this)' style='z-index:1;position:absolute;top:3;left:18;display:none' " +
 28      "  οnchange='parent.WebCalendar.thisYear =this.value; parent.hiddenSelect(this); parent.writeCalendar();'></select> " +
 29      " <select name=tmpMonthSelect οnblur='parent.hiddenSelect(this)' style='z-index:1; position:absolute;top:3;left:74;display:none' " +
 30      "  οnchange='parent.WebCalendar.thisMonth=this.value; parent.hiddenSelect(this); parent.writeCalendar();'></select> " +
 31      " <table id=tableMain class=bg border=0 cellspacing=2 cellpadding=0> " +
 32      " <tr><td width=140 height=19 bgcolor=' " +  WebCalendar.lightColor  + " '> " +
 33      "     <table width=140 id=tableHead border=0 cellspacing=1 cellpadding=0><tr align=center> " +
 34      "     <td width=15 height=19 class=bg title='向前翻 1 月&#13;快捷键:←' style='cursor: hand' οnclick='parent.prevM()'><b>&lt;</b></td> " +
 35      "     <td width=60 id=meizzYearHead  title='点击此处选择年份' οnclick='parent.funYearSelect(parseInt(this.innerText, 10))' " +
 36      "         οnmοuseοver='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor' " +
 37      "         οnmοuseοut='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'></td> " +
 38      "     <td width=50 id=meizzYearMonth title='点击此处选择月份' οnclick='parent.funMonthSelect(parseInt(this.innerText, 10))' " +
 39      "         οnmοuseοver='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor' " +
 40      "         οnmοuseοut='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'></td> " +
 41      "     <td width=15 class=bg title='向后翻 1 月&#13;快捷键:→' οnclick='parent.nextM()' style='cursor: hand'><b>&gt;</b></td></tr></table> " +
 42      " </td></tr><tr><td height=20><table id=tableWeek border=1 width=140 cellpadding=0 cellspacing=0  " ;
 43      if (WebCalendar.drag){strIframe  +=   " οnmοusedοwn='dragStart()' οnmοuseup='drag=false' οnmοuseοut='drag=false' " ;}
 44     strIframe  +=   "  borderColorLight=' " +  WebCalendar.darkColor  + " ' borderColorDark=' " +  WebCalendar.lightColor  + " '> " +
 45      "     <tr align=center><td height=20>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr></table> " +
 46      " </td></tr><tr><td valign=top width=140 bgcolor=' " +  WebCalendar.lightColor  + " '> " +
 47      "     <table id=tableDay height=120 width=140 border=0 cellspacing=1 cellpadding=0> " ;
 48           for ( var  x = 0 ; x < 5 ; x ++ ){ strIframe  +=   " <tr> " ;
 49           for ( var  y = 0 ; y < 7 ; y ++ )  strIframe  +=   " <td class=out id='meizzDay " +  (x * 7 + y)  + " '></td> " ; strIframe  +=   " </tr> " ;}
 50          strIframe  +=   " <tr> " ;
 51           for ( var  x = 35 ; x < 39 ; x ++ ) strIframe  +=   " <td class=out id='meizzDay " +  x  + " '></td> " ;
 52          strIframe  += " <td colspan=3 class=out title=' " +  WebCalendar.regInfo  + " '><input style=' background-color:  " +
 53          WebCalendar.btnBgColor  + " ;cursor: hand; padding-top: 4px; width: 100%; height: 100%; border: 0' οnfοcus='this.blur()' " +
 54           "  type=button value='&nbsp; &nbsp; 关闭' οnclick='parent.hiddenCalendar()'></td></tr></table> " +
 55      " </td></tr><tr><td height=20 width=140 bgcolor=' " +  WebCalendar.lightColor  + " '> " +
 56      "     <table border=0 cellpadding=1 cellspacing=0 width=140> " +
 57      "     <tr><td><input name=prevYear title='向前翻 1 年&#13;快捷键:↑' οnclick='parent.prevY()' type=button value='&lt;&lt;' " +
 58      "     οnfοcus='this.blur()' style='meizz:expression(this.disabled=parent.WebCalendar.thisYear==1000)'><input " +
 59      "     οnfοcus='this.blur()' name=prevMonth title='向前翻 1 月&#13;快捷键:←' οnclick='parent.prevM()' type=button value='&lt;&nbsp;'> " +
 60      "     </td><td align=center><input name=today type=button value='Today' οnfοcus='this.blur()' style='width: 50' title='当前日期&#13;快捷键:T' " +
 61      "     οnclick=/ " parent.returnDate( new  Date().getDate()  + ' / ' +  ( new  Date().getMonth()  + 1 + ' / ' +   new  Date().getFullYear())/ " > " +
 62      "     </td><td align=right><input title='向后翻 1 月&#13;快捷键:→' name=nextMonth οnclick='parent.nextM()' type=button value='&nbsp;&gt;' " +
 63      "     οnfοcus='this.blur()'><input name=nextYear title='向后翻 1 年&#13;快捷键:↓' οnclick='parent.nextY()' type=button value='&gt;&gt;' " +
 64      "     οnfοcus='this.blur()' style='meizz:expression(this.disabled=parent.WebCalendar.thisYear==9999)'></td></tr></table> " +
 65      " </td></tr><table></form></body></html> " ;
 66      with (WebCalendar.iframe)
 67     {
 68         document.writeln(strIframe); document.close();
 69          for ( var  i = 0 ; i < 39 ; i ++ )
 70         {
 71             WebCalendar.dayObj[i]  =  eval( " meizzDay " +  i);
 72             WebCalendar.dayObj[i].onmouseover  =  dayMouseOver;
 73             WebCalendar.dayObj[i].onmouseout   =  dayMouseOut;
 74             WebCalendar.dayObj[i].onclick      =  returnDate;
 75         }
 76     }
 77 }
 78 function  WebCalendar()  // 初始化日历的设置
 79 {
 80      this .regInfo     =   " WEB Calendar ver 3.0&#13;关闭的快捷键:[Esc] " ;
 81      this .daysMonth   =   new  Array( 31 28 31 30 31 30 31 31 30 31 30 31 );
 82      this .day         =   new  Array( 39 );             // 定义日历展示用的数组
 83      this .dayObj      =   new  Array( 39 );             // 定义日期展示控件数组
 84      this .dateStyle   =   null ;                      // 保存格式化后日期数组
 85      this .objExport   =   null ;                      // 日历回传的显示控件
 86      this .eventSrc    =   null ;                      // 日历显示的触发控件
 87      this .inputDate   =   null ;                      // 转化外的输入的日期(d/m/yyyy)
 88      this .thisYear    =   new  Date().getFullYear();  // 定义年的变量的初始值
 89      this .thisMonth   =   new  Date().getMonth() +   1 // 定义月的变量的初始值
 90      this .thisDay     =   new  Date().getDate();      // 定义日的变量的初始值
 91      this .today       =   this .thisDay  + " / " +   this .thisMonth  + " / " +   this .thisYear;    // 今天(d/m/yyyy)
 92      this .iframe      =  window.frames( " meizzCalendarIframe " );  // 日历的 iframe 载体
 93      this .calendar    =  getObjectById( " meizzCalendarLayer " );   // 日历的层
 94      this .dateReg     =   "" ;            // 日历格式验证的正则式
 95      this .yearFall    =   50 ;            // 定义年下拉框的年差值
 96      this .format      =   " yyyy-mm-dd " // 回传日期的格式
 97      this .timeShow    =   false ;         // 是否返回时间
 98      this .drag        =   true ;          // 是否允许拖动
 99      this .darkColor   =   " #408080 " ;     // 控件的暗色
100      this .lightColor  =   " #FFFFFF " ;     // 控件的亮色
101      this .btnBgColor  =   " #ededed " ;     // 控件的按钮背景色
102      this .wordColor   =   " #000000 " ;     // 控件的文字颜色
103      this .wordDark    =   " #DCDCDC " ;     // 控件的暗文字颜色
104      this .dayBgColor  =   " #F5F5FA " ;     // 日期数字背景色
105      this .todayColor  =   " #ff3300 " ;     // 今天在日历上的标示背景色
106      this .DarkBorder  =   " #D4D0C8 " ;     // 日期显示的立体表达色
107 }    var  WebCalendar  =   new  WebCalendar();
108 function  calendar()  // 主调函数
109 {
110      var  e  =  window.event.srcElement;   
111     writeIframe();
112      var  o  =  WebCalendar.calendar.style; WebCalendar.eventSrc  =  e;
113   if  (arguments.length  ==   0 ) WebCalendar.objExport  =  e;
114      else  WebCalendar.objExport  =  eval(arguments[ 0 ]);
115     WebCalendar.iframe.tableWeek.style.cursor  =  WebCalendar.drag  ?   " move "  :  " default " ;
116   var  t  =  e.offsetTop,  h  =  e.clientHeight, l  =  e.offsetLeft, p  =  e.type;
117   while  (e  =  e.offsetParent){t  +=  e.offsetTop; l  +=  e.offsetLeft;}
118     o.display  =   "" ; WebCalendar.iframe.document.body.focus();
119      var  cw  =  WebCalendar.calendar.clientWidth, ch  =  WebCalendar.calendar.clientHeight;
120      var  dw  =  document.body.clientWidth, dl  =  document.body.scrollLeft, dt  =  document.body.scrollTop;
121     
122      if  (document.body.clientHeight  +  dt  -  t  -  h  >=  ch) o.top  =  (p == " image " ) ?  t  +  h : t  +  h  +   6 ;
123      else  o.top   =  (t  -  dt  <  ch)  ?  ((p == " image " ) ?  t  +  h : t  +  h  +   6 ) : t  -  ch;
124      if  (dw  +  dl  -  l  >=  cw) o.left  =  l;  else  o.left  =  (dw  >=  cw)  ?  dw  -  cw  +  dl : dl;
125      if   ( ! WebCalendar.timeShow) WebCalendar.dateReg  =   /^ (/d{ 1 , 4 })( -| / / )(/d{ 1 , 2 })/ 2 (/d{ 1 , 2 })$ / ;
126      else  WebCalendar.dateReg  =   /^ (/d{ 1 , 4 })( -| / / )(/d{ 1 , 2 })/ 2 (/d{ 1 , 2 }) (/d{ 1 , 2 }):(/d{ 1 , 2 }):(/d{ 1 , 2 })$ / ;
127      try {
128          if  (WebCalendar.objExport.value.trim()  !=   "" ){
129             WebCalendar.dateStyle  =  WebCalendar.objExport.value.trim().match(WebCalendar.dateReg);
130              if  (WebCalendar.dateStyle  ==   null )
131             {
132                 WebCalendar.thisYear    =   new  Date().getFullYear();
133                 WebCalendar.thisMonth   =   new  Date().getMonth() +   1 ;
134                 WebCalendar.thisDay     =   new  Date().getDate();
135                 alert( " 原文本框里的日期有错误!/n可能与你定义的显示时分秒有冲突! " );
136                 writeCalendar();  return   false ;
137             }
138              else
139             {
140                 WebCalendar.thisYear    =  parseInt(WebCalendar.dateStyle[ 1 ],  10 );
141                 WebCalendar.thisMonth   =  parseInt(WebCalendar.dateStyle[ 3 ],  10 );
142                 WebCalendar.thisDay     =  parseInt(WebCalendar.dateStyle[ 4 ],  10 );
143                 WebCalendar.inputDate   =  parseInt(WebCalendar.thisDay,  10 + " / " +  parseInt(WebCalendar.thisMonth,  10 + " / " +  
144                 parseInt(WebCalendar.thisYear,  10 ); writeCalendar();
145             }
146         }   else  writeCalendar();
147     }   catch (e){writeCalendar();}
148 }
149 function  funMonthSelect()  // 月份的下拉框
150 {
151      var  m  =  isNaN(parseInt(WebCalendar.thisMonth,  10 ))  ?   new  Date().getMonth()  +   1  : parseInt(WebCalendar.thisMonth);
152      var  e  =  WebCalendar.iframe.document.forms[ 0 ].tmpMonthSelect;
153      for  ( var  i = 1 ; i < 13 ; i ++ ) e.options.add( new  Option(i  + " " , i));
154     e.style.display  =   "" ; e.value  =  m; e.focus(); window.status  =  e.style.top;
155 }
156 function  funYearSelect()  // 年份的下拉框
157 {
158      var  n  =  WebCalendar.yearFall;
159      var  e  =  WebCalendar.iframe.document.forms[ 0 ].tmpYearSelect;
160      var  y  =  isNaN(parseInt(WebCalendar.thisYear,  10 ))  ?   new  Date().getFullYear() : parseInt(WebCalendar.thisYear);
161         y  =  (y  <=   1000 ) ?   1000  : ((y  >=   9999 ) ?   9999  : y);
162      var  min  =  (y  -  n  >=   1000 ?  y  -  n :  1000 ;
163      var  max  =  (y  +  n  <=   9999 ?  y  +  n :  9999 ;
164         min  =  (max  ==   9999 ?  max - n * 2  : min;
165         max  =  (min  ==   1000 ?  min + n * 2  : max;
166      for  ( var  i = min; i <= max; i ++ ) e.options.add( new  Option(i  + " " , i));
167     e.style.display  =   "" ; e.value  =  y; e.focus();
168 }
169 function  prevM()   // 往前翻月份
170 {
171     WebCalendar.thisDay  =   1 ;
172      if  (WebCalendar.thisMonth == 1 )
173     {
174         WebCalendar.thisYear -- ;
175         WebCalendar.thisMonth = 13 ;
176     }
177     WebCalendar.thisMonth -- ; writeCalendar();
178 }
179 function  nextM()   // 往后翻月份
180 {
181     WebCalendar.thisDay  =   1 ;
182      if  (WebCalendar.thisMonth == 12 )
183     {
184         WebCalendar.thisYear ++ ;
185         WebCalendar.thisMonth = 0 ;
186     }
187     WebCalendar.thisMonth ++ ; writeCalendar();
188 }
189 function  prevY(){WebCalendar.thisDay  =   1 ; WebCalendar.thisYear -- ; writeCalendar();} // 往前翻 Year
190 function  nextY(){WebCalendar.thisDay  =   1 ; WebCalendar.thisYear ++ ; writeCalendar();} // 往后翻 Year
191 function  hiddenSelect(e){ for ( var  i = e.options.length; i >- 1 ; i -- )e.options.remove(i); e.style.display = " none " ;}
192 function  getObjectById(id){  if (document.all)  return (eval( " document.all. " +  id));  return (eval(id)); }
193 function  hiddenCalendar(){getObjectById( " meizzCalendarLayer " ).style.display  =   " none " ;};
194 function  appendZero(n){ return (( " 00 " +  n).substr(( " 00 " +  n).length - 2 ));} // 日期自动补零程序
195 function  String.prototype.trim(){ return   this .replace( / ( ^ /s * ) | (/s * $) / g, "" );}
196 function  dayMouseOver()
197 {
198      this .className  =   " over " ;
199      this .style.backgroundColor  =  WebCalendar.darkColor;
200      if (WebCalendar.day[ this .id.substr( 8 )].split( " / " )[ 1 ==  WebCalendar.thisMonth)
201      this .style.color  =  WebCalendar.lightColor;
202 }
203 function  dayMouseOut()
204 {
205      this .className  =   " out " var  d  =  WebCalendar.day[ this .id.substr( 8 )], a  =  d.split( " / " );
206      this .style.removeAttribute('backgroundColor');
207      if (a[ 1 ==  WebCalendar.thisMonth  &&  d  !=  WebCalendar.today)
208     {
209          if (WebCalendar.dateStyle  &&  a[ 0 ==  parseInt(WebCalendar.dateStyle[ 4 ],  10 ))
210              this .style.color  =  WebCalendar.lightColor;
211          else
212              this .style.color  =  WebCalendar.wordColor;
213     }
214 }
215 function  writeCalendar()  // 对日历显示的数据的处理程序
216 {
217      var  y  =  WebCalendar.thisYear;
218      var  m  =  WebCalendar.thisMonth; 
219      var  d  =  WebCalendar.thisDay;
220     WebCalendar.daysMonth[ 1 =  ( 0 == y % 4   &&  (y % 100 != 0   ||  y % 400 == 0 ))  ?   29  :  28 ;
221      if  ( ! (y <= 9999   &&  y  >=   1000   &&  parseInt(m,  10 ) > 0   &&  parseInt(m,  10 ) < 13   &&  parseInt(d,  10 ) > 0 )){
222         alert( " 对不起,你输入了错误的日期! " );
223         WebCalendar.thisYear    =   new  Date().getFullYear();
224         WebCalendar.thisMonth   =   new  Date().getMonth() +   1 ;
225         WebCalendar.thisDay     =   new  Date().getDate(); }
226     y  =  WebCalendar.thisYear;
227     m  =  WebCalendar.thisMonth;
228     d  =  WebCalendar.thisDay;
229     WebCalendar.iframe.meizzYearHead.innerText   =  y  + "  年 " ;
230     WebCalendar.iframe.meizzYearMonth.innerText  =  parseInt(m,  10 + "  月 " ;
231     WebCalendar.daysMonth[ 1 =  ( 0 == y % 4   &&  (y % 100 != 0   ||  y % 400 == 0 ))  ?   29  :  28 // 闰年二月为29天
232      var  w  =   new  Date(y, m - 1 1 ).getDay();
233      var  prevDays  =  m == 1    ?  WebCalendar.daysMonth[ 11 ] : WebCalendar.daysMonth[m - 2 ];
234      for ( var  i = (w - 1 ); i >= 0 ; i -- // 这三个 for 循环为日历赋数据源(数组 WebCalendar.day)格式是 d/m/yyyy
235     {
236         WebCalendar.day[i]  =  prevDays  + " / " +  (parseInt(m,  10 ) - 1 + " / " +  y;
237          if (m == 1 ) WebCalendar.day[i]  =  prevDays  + " / " +   12   + " / " +  (parseInt(y,  10 ) - 1 );
238         prevDays -- ;
239     }
240      for ( var  i = 1 ; i <= WebCalendar.daysMonth[m - 1 ]; i ++ ) WebCalendar.day[i + w - 1 =  i  + " / " +  m  + " / " +  y;
241      for ( var  i = 1 ; i < 39 - w - WebCalendar.daysMonth[m - 1 ] + 1 ; i ++ )
242     {
243         WebCalendar.day[WebCalendar.daysMonth[m - 1 ] + w - 1 + i]  =  i  + " / " +  (parseInt(m,  10 ) + 1 + " / " +  y;
244          if (m == 12 ) WebCalendar.day[WebCalendar.daysMonth[m - 1 ] + w - 1 + i]  =  i  + " / " +   1   + " / " +  (parseInt(y,  10 ) + 1 );
245     }
246      for ( var  i = 0 ; i < 39 ; i ++ )     // 这个循环是根据源数组写到日历里显示
247     {
248          var  a  =  WebCalendar.day[i].split( " / " );
249         WebCalendar.dayObj[i].innerText     =  a[ 0 ];
250         WebCalendar.dayObj[i].title         =  a[ 2 + " - " +  appendZero(a[ 1 ])  + " - " +  appendZero(a[ 0 ]);
251         WebCalendar.dayObj[i].bgColor       =  WebCalendar.dayBgColor;
252         WebCalendar.dayObj[i].style.color   =  WebCalendar.wordColor;
253          if  ((i < 10   &&  parseInt(WebCalendar.day[i],  10 ) > 20 ||  (i > 27   &&  parseInt(WebCalendar.day[i],  10 ) < 12 ))
254             WebCalendar.dayObj[i].style.color  =  WebCalendar.wordDark;
255          if  (WebCalendar.inputDate == WebCalendar.day[i])     // 设置输入框里的日期在日历上的颜色
256         {WebCalendar.dayObj[i].bgColor  =  WebCalendar.darkColor; WebCalendar.dayObj[i].style.color  =  WebCalendar.lightColor;}
257          if  (WebCalendar.day[i]  ==  WebCalendar.today)       // 设置今天在日历上反应出来的颜色
258         {WebCalendar.dayObj[i].bgColor  =  WebCalendar.todayColor; WebCalendar.dayObj[i].style.color  =  WebCalendar.lightColor;}
259     }
260 }
261 function  returnDate()  // 根据日期格式等返回用户选定的日期
262 {
263      if (WebCalendar.objExport)
264     {
265          var  returnValue;
266          var  a  =  (arguments.length == 0 ?  WebCalendar.day[ this .id.substr( 8 )].split( " / " ) : arguments[ 0 ].split( " / " );
267          var  d  =  WebCalendar.format.match( /^ (/w{ 4 })( -| / / )(/w{ 1 , 2 })/ 2 (/w{ 1 , 2 })$ / );
268          if (d == null ){alert( " 你设定的日期输出格式不对!/r/n/r/n请重新定义 WebCalendar.format ! " );  return   false ;}
269          var  flag  =  d[ 3 ].length == 2   ||  d[ 4 ].length == 2 // 判断返回的日期格式是否要补零
270         returnValue  =  flag  ?  a[ 2 + d[ 2 ] +  appendZero(a[ 1 ])  + d[ 2 ] +  appendZero(a[ 0 ]) : a[ 2 + d[ 2 ] +  a[ 1 + d[ 2 ] +  a[ 0 ];
271          if (WebCalendar.timeShow)
272         {
273              var  h  =   new  Date().getHours(), m  =   new  Date().getMinutes(), s  =   new  Date().getSeconds();
274             returnValue  +=  flag  ?   "   " +  appendZero(h)  + " : " +  appendZero(m)  + " : " +  appendZero(s) :  "   " +   h   + " : " +  m  + " : " +  s;
275         }
276         WebCalendar.objExport.value  =  returnValue;
277         hiddenCalendar();
278     }
279 }
280 function  document.onclick()
281 {
282      if (WebCalendar.eventSrc  !=  window.event.srcElement) hiddenCalendar();
283 }
284
285
286 /*     jeff add
287     日期输入控件的控制函数
288 */
289 function  makeDate(Obj)
290 {
291      var  y = eval( " document.all. " + Obj + " YearInput " ).value;
292      var  m = eval( " document.all. " + Obj + " MonthInput " ).value;
293      var  d = eval( " document.all. " + Obj + " DayInput " ).value;
294      // 使用 datetime 数据类型存储从 1753 年 1 月 1 日至 9999 年 12 月 31 日的日期
295      if (isDate(y,m,d)  &&  y >= 1753 )
296     {
297         eval( " document.all. " + Obj).value = y + " - " + m + " - " + d;
298     }
299      else
300     {
301          if (y != "" || m != "" || d != "" )
302              return   false ;
303         eval( " document.all. " + Obj).value  =   "" ;
304     }
305      return   true ;
306 }
307 function  splitDate(Obj)
308 {
309      var  dt = eval( " document.all. " + Obj).value;
310     eval( " document.all. " + Obj + " YearInput " ).value = dt.substring( 0 ,dt.indexOf( " - " ));
311     eval( " document.all. " + Obj + " MonthInput " ).value = dt.substring(dt.indexOf( " - " ) + 1 ,dt.lastIndexOf( " - " ));
312     eval( " document.all. " + Obj + " DayInput " ).value = dt.substring(dt.lastIndexOf( " - " ) + 1 );
313 }
314 function  isDate(year,month,day)
315 {
316     month  =  month - 1 ;
317      var  dt  =   new  Date(year,month,day);
318      if (year == dt.getFullYear() && month == dt.getMonth() && day == dt.getDate())
319          return   true ;
320      else
321          return   false ;
322 }
323
324 // 显示日期输入控件(输入框名称,初始日期值,是否需要日历控件)
325 function  writeDateInput(inputName,inputValue,needCalendar)
326 {
327      var  dateInput  =   " <table cellspacing=0 cellpadding=0><tr><td><div class=cBoxnosize style='width:80'> " +
328          " <input class=yearInput type=text name= " + inputName + " YearInput size=4 maxlength=4 οnkeydοwn=/ " if (event.keyCode == 39 )event.keyCode = 9 ;/ "  onpropertychange=/ " if (value.length == 4 ) this .nextSibling.nextSibling.select();/ "  οnblur=/ " if (value.search( / [ ^ 0 - 9 ] / ) >- 1 ){alert('请输入数字'); this .select();}/ " > " +
329          " -<input class=monthInput type=text name= " + inputName + " MonthInput size=2 maxlength=2 οnkeydοwn=/ " if (event.keyCode == 39 )event.keyCode = 9 ; if (event.keyCode == 37 ) this .previousSibling.previousSibling.select();/ "  onpropertychange=/ " if (value.length == 2 ) this .nextSibling.nextSibling.select();/ "  οnblur=/ " if (value.search( / [ ^ 0 - 9 ] / ) >- 1 ){alert('请输入数字'); this .select();}/ " > " +
330          " -<input class=dayInput type=text name= " + inputName + " DayInput size=2 maxlength=2 οnkeydοwn=/ " if (event.keyCode == 37 ) this .previousSibling.previousSibling.select();/ "  οnblur=/ " if (value.search( / [ ^ 0 - 9 ] / ) >- 1 ){alert('请输入数字'); this .select();}/ " > " +
331          " <input type=hidden name= " + inputName + "  onpropertychange=/ " splitDate(' " +inputName+ " ')/ " > " ;
332      if (needCalendar == true )
333         dateInput  =  dateInput + " </div></td><td>&nbsp;<input type=button value=/ " 日期/ "  οnclick=/ " if ( ! makeDate(' " +inputName+ " '))alert('对不起,你输入了错误的日期!');calendar(document.all. " +inputName+ " );/ "  class=cButton></td></tr></table> " ;
334      else
335         dateInput  =  dateInput + " </div></td></tr></table> " ;
336     document.writeln(dateInput);
337      if (inputValue != "" )
338         eval( " document.all. " + inputName).value = inputValue;
339 }
340
341 function  writeDateInputs(inputName,inputId,inputValue,needCalendar)
342 {
343      var  dateInput  =   " <table><tr><td><div class=cBoxnosize style='width:80'> " +
344          " <input class=yearInput type=text name= " + inputId + " YearInput size=4 maxlength=4 οnkeydοwn=/ " if (event.keyCode == 39 )event.keyCode = 9 ;/ "  onpropertychange=/ " if (value.length == 4 ) this .nextSibling.nextSibling.select();/ "  οnblur=/ " if (value.search( / [ ^ 0 - 9 ] / ) >- 1 ){alert('请输入数字'); this .select();}/ " > " +
345          " -<input class=monthInput type=text name= " + inputId + " MonthInput size=2 maxlength=2 οnkeydοwn=/ " if (event.keyCode == 39 )event.keyCode = 9 ; if (event.keyCode == 37 ) this .previousSibling.previousSibling.select();/ "  onpropertychange=/ " if (value.length == 2 ) this .nextSibling.nextSibling.select();/ "  οnblur=/ " if (value.search( / [ ^ 0 - 9 ] / ) >- 1 ){alert('请输入数字'); this .select();}/ " > " +
346          " -<input class=dayInput type=text name= " + inputId + " DayInput size=2 maxlength=2 οnkeydοwn=/ " if (event.keyCode == 37 ) this .previousSibling.previousSibling.select();/ "  οnblur=/ " if (value.search( / [ ^ 0 - 9 ] / ) >- 1 ){alert('请输入数字'); this .select();}/ " > " +
347          " <input type=hidden name= " + inputName + "  id= " + inputId + "  onpropertychange=/ " splitDate(' " +inputId+ " ')/ " > " ;
348      if (needCalendar == true )
349         dateInput  =  dateInput + " </div></td><td><input type=button value=/ " 日期/ "  οnclick=/ " if ( ! makeDate(' " +inputId+ " '))alert('对不起,你输入了错误的日期!');calendar(document.all. " +inputId+ " );/ "  class=cButton></td></tr></table> " ;
350      else
351         dateInput  =  dateInput + " </div></td></tr></table> " ;
352     document.writeln(dateInput);
353      if (inputValue != "" )
354         eval( " document.all. " + inputId).value = inputValue;
355 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值