更新更强的日历脚本(downmoon)

万年历、日历——拿来即用(简单易上手,操作方便) 前段时间用到了搞出来了,所以就和大家分享一下,上成果。整个日历结构还是比较简单的,注释啥的都给大哥们整好了,都是手写的静态数据请放心食用,效果图呈上! HTML代码: CSS代码: JS代码: 大功告成!最后欢迎大家讨论发言,提出问题~~~ 阅读详情

第一步:将如下内容存为Calendar.js

document.write( " <div id=meizzCalendarLayer style='position: absolute; z-index: 9999; width: 144; height: 193; display: none'> " );
document.write(
" <iframe name=meizzCalendarIframe scrolling=no frameborder=0 width=100% height=100%></iframe></div> " );
function  writeIframe()
{
    
var  strIframe  =   " <html><head><meta http-equiv='Content-Type' content='text/html; charset=gb2312'><style> " +
    
" *{font-size: 12px; font-family: 宋体} " +
    
" .bg{  color:  " +  WebCalendar.lightColor  + " ; cursor: default; background-color:  " +  WebCalendar.darkColor  + " ;} " +
    
" table#tableMain{ width: 142; height: 180;} " +
    
" table#tableWeek td{ color:  " +  WebCalendar.lightColor  + " ;} " +
    
" table#tableDay  td{ font-weight: bold;} " +
    
" td#meizzYearHead, td#meizzYearMonth{color:  " +  WebCalendar.wordColor  + " } " +
    
" .out { text-align: center; border-top: 1px solid  " +  WebCalendar.DarkBorder  + " ; border-left: 1px solid  " +  WebCalendar.DarkBorder  + " ; " +
    
" border-right: 1px solid  " +  WebCalendar.lightColor  + " ; border-bottom: 1px solid  " +  WebCalendar.lightColor  + " ;} " +
    
" .over{ text-align: center; border-top: 1px solid #FFFFFF; border-left: 1px solid #FFFFFF; " +
    
" border-bottom: 1px solid  " +  WebCalendar.DarkBorder  + " ; border-right: 1px solid  " +  WebCalendar.DarkBorder  + " } " +
    
" input{ border: 1px solid  " +  WebCalendar.darkColor  + " ; padding-top: 1px; height: 18; cursor: hand; " +
    
"        color: " +  WebCalendar.wordColor  + " ; background-color:  " +  WebCalendar.btnBgColor  + " } " +
    
" </style></head><body onselectstart='return false' style='margin: 0px' oncontextmenu='return false'><form name=meizz> " ;

    
if  (WebCalendar.drag) { strIframe  +=   " <scr " + " ipt language=javascript> " +
    
" var drag=false, cx=0, cy=0, o = parent.WebCalendar.calendar; function document.onmousemove(){ " +
    
" if(parent.WebCalendar.drag && drag){if(o.style.left=='')o.style.left=0; if(o.style.top=='')o.style.top=0; " +
    
" o.style.left = parseInt(o.style.left) + window.event.clientX-cx; " +
    
" o.style.top  = parseInt(o.style.top)  + window.event.clientY-cy;}} " +
    
" function document.onkeydown(){ switch(window.event.keyCode){  case 27 : parent.hiddenCalendar(); break; " +
    
" case 37 : parent.prevM(); break; case 38 : parent.prevY(); break; case 39 : parent.nextM(); break; case 40 : parent.nextY(); break; " +
    
" case 84 : document.forms[0].today.click(); break;} window.event.keyCode = 0; window.event.returnValue= false;} " +
    
" function dragStart(){cx=window.event.clientX; cy=window.event.clientY; drag=true;}</scr " + " ipt> " }


    strIframe 
+=   " <select name=tmpYearSelect  onblur='parent.hiddenSelect(this)' style='z-index:1;position:absolute;top:3;left:18;display:none' " +
    
"  onchange='parent.WebCalendar.thisYear =this.value; parent.hiddenSelect(this); parent.writeCalendar();'></select> " +
    
" <select name=tmpMonthSelect onblur='parent.hiddenSelect(this)' style='z-index:1; position:absolute;top:3;left:74;display:none' " +
    
"  onchange='parent.WebCalendar.thisMonth=this.value; parent.hiddenSelect(this); parent.writeCalendar();'></select> " +

    
" <table id=tableMain class=bg border=0 cellspacing=2 cellpadding=0> " +
    
" <tr><td width=140 height=19 bgcolor=' " +  WebCalendar.lightColor  + " '> " +
    
"     <table width=140 id=tableHead border=0 cellspacing=1 cellpadding=0><tr align=center> " +
    
"     <td width=15 height=19 class=bg title='向前翻 1 月&#13;快捷键:←' style='cursor: hand' onclick='parent.prevM()'><b>&lt;</b></td> " +
    
"     <td width=60 id=meizzYearHead  title='点击此处选择年份' onclick='parent.funYearSelect(parseInt(this.innerText, 10))' " +
    
"         onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor' " +
    
"         onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'></td> " +
    
"     <td width=50 id=meizzYearMonth title='点击此处选择月份' onclick='parent.funMonthSelect(parseInt(this.innerText, 10))' " +
    
"         onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor' " +
    
"         onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'></td> " +
    
"     <td width=15 class=bg title='向后翻 1 月&#13;快捷键:→' onclick='parent.nextM()' style='cursor: hand'><b>&gt;</b></td></tr></table> " +
    
" </td></tr><tr><td height=20><table id=tableWeek border=1 width=140 cellpadding=0 cellspacing=0  " ;
    
if (WebCalendar.drag) {strIframe  +=   " onmousedown='dragStart()' onmouseup='drag=false' onmouseout='drag=false' " ;}
    strIframe 
+=   "  borderColorLight=' " +  WebCalendar.darkColor  + " ' borderColorDark=' " +  WebCalendar.lightColor  + " '> " +
    
"     <tr align=center><td height=20>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr></table> " +
    
" </td></tr><tr><td valign=top width=140 bgcolor=' " +  WebCalendar.lightColor  + " '> " +
    
"     <table id=tableDay height=120 width=140 border=0 cellspacing=1 cellpadding=0> " ;
         
for ( var  x = 0 ; x < 5 ; x ++ ) { strIframe  +=   " <tr> " ;
         
for ( var  y = 0 ; y < 7 ; y ++ )  strIframe  +=   " <td class=out id='meizzDay " +  (x * 7 + y)  + " '></td> " ; strIframe  +=   " </tr> " ;}

         strIframe 
+=   " <tr> " ;
         
for ( var  x = 35 ; x < 39 ; x ++ ) strIframe  +=   " <td class=out id='meizzDay " +  x  + " '></td> " ;
         strIframe 
+= " <td colspan=3 class=out title=' " +  WebCalendar.regInfo  + " '><input style=' background-color:  " +
         WebCalendar.btnBgColor 
+ " ;cursor: hand; padding-top: 4px; width: 100%; height: 100%; border: 0' onfocus='this.blur()' " +
         
"  type=button value='&nbsp; &nbsp; 关闭' onclick='parent.hiddenCalendar()'></td></tr></table> " +
    
" </td></tr><tr><td height=20 width=140 bgcolor=' " +  WebCalendar.lightColor  + " '> " +
    
"     <table border=0 cellpadding=1 cellspacing=0 width=140> " +
    
"     <tr><td><input name=prevYear title='向前翻 1 年&#13;快捷键:↑' onclick='parent.prevY()' type=button value='&lt;&lt;' " +
    
"     onfocus='this.blur()' style='meizz:expression(this.disabled=parent.WebCalendar.thisYear==1000)'><input " +
    
"     onfocus='this.blur()' name=prevMonth title='向前翻 1 月&#13;快捷键:←' onclick='parent.prevM()' type=button value='&lt;&nbsp;'> " +
    
"     </td><td align=center><input name=today type=button value='今天' onfocus='this.blur()' style='width: 50' title='当前日期&#13;快捷键:T' " +
    
"     onclick="parent.returnDate(new Date().getDate() +'/'+ (new Date().getMonth() +1) +'/'+ new Date().getFullYear())"> " +
    
"     </td><td align=right><input title='向后翻 1 月&#13;快捷键:→' name=nextMonth onclick='parent.nextM()' type=button value='&nbsp;&gt;' " +
    
"     onfocus='this.blur()'><input name=nextYear title='向后翻 1 年&#13;快捷键:↓' onclick='parent.nextY()' type=button value='&gt;&gt;' " +
    
"     onfocus='this.blur()' style='meizz:expression(this.disabled=parent.WebCalendar.thisYear==9999)'></td></tr></table> " +
    
" </td></tr><table></form></body></html> " ;
    
with (WebCalendar.iframe)
    
{
        document.writeln(strIframe); document.close();
        
for ( var  i = 0 ; i < 39 ; i ++ )
        
{
            WebCalendar.dayObj[i] 
=  eval( " meizzDay " +  i);
            WebCalendar.dayObj[i].onmouseover 
=  dayMouseOver;
            WebCalendar.dayObj[i].onmouseout  
=  dayMouseOut;
            WebCalendar.dayObj[i].onclick     
=  returnDate;
        }

    }

}

function  TWebCalendar()  // 初始化日历的设置
{
    
this .regInfo     =   " 点击关闭按钮关闭日期选择器! " ;
   
//  this.regInfo    = "WEB Calendar 3.0&#13;作者:meizz(梅花雪疏影横斜)&#13;网站:http://www.meizz.com/&#13;关闭的快捷键:[Esc]";
    //  this.regInfo   += "&#13;&#13;Ver 2.0:walkingpoison(水晶龙)&#13;Ver 1.0:meizz(梅花雪疏影横斜)";
     this .daysMonth   =   new  Array( 31 ,  28 ,  31 ,  30 ,  31 ,  30 ,  31 ,  31 ,  30 ,  31 ,  30 ,  31 );
    
this .day         =   new  Array( 39 );             // 定义日历展示用的数组
     this .dayObj      =   new  Array( 39 );             // 定义日期展示控件数组
     this .dateStyle   =   null ;                      // 保存格式化后日期数组
     this .objExport   =   null ;                      // 日历回传的显示控件
     this .eventSrc    =   null ;                      // 日历显示的触发控件
     this .inputDate   =   null ;                      // 转化外的输入的日期(d/m/yyyy)
     this .thisYear    =   new  Date().getFullYear();  // 定义年的变量的初始值
     this .thisMonth   =   new  Date().getMonth() +   1 ;  // 定义月的变量的初始值
     this .thisDay     =   new  Date().getDate();      // 定义日的变量的初始值
     this .today       =   this .thisDay  + " / " +   this .thisMonth  + " / " +   this .thisYear;    // 今天(d/m/yyyy)
     this .iframe      =  window.frames( " meizzCalendarIframe " );  // 日历的 iframe 载体
     this .calendar    =  getObjectById( " meizzCalendarLayer " );   // 日历的层
     this .dateReg     =   "" ;            // 日历格式验证的正则式

    
this .yearFall    =   50 ;            // 定义年下拉框的年差值
     this .format      =   " yyyy-mm-dd " ;  // 回传日期的格式
     this .timeShow    =   false ;         // 是否返回时间
     this .drag        =   true ;          // 是否允许拖动
     this .darkColor   =   " #6BBFD9 " ;     // 控件的暗色
     this .lightColor  =   " #FFFFFF " ;     // 控件的亮色
     this .btnBgColor  =   " #FFFFF5 " ;     // 控件的按钮背景色
     this .wordColor   =   " #000080 " ;     // 控件的文字颜色
     this .wordDark    =   " #DCDCDC " ;     // 控件的暗文字颜色
     this .dayBgColor  =   " #DEEAF6 " ;     // 日期数字背景色
     this .todayColor  =   " #FF0000 " ;     // 今天在日历上的标示背景色
     this .DarkBorder  =   " #D4D0C8 " ;     // 日期显示的立体表达色
}
    var  WebCalendar  =   new  TWebCalendar();

function  calendar()  // 主调函数
{
    
var  e  =  window.event.srcElement;   writeIframe();
    
var  o  =  WebCalendar.calendar.style; WebCalendar.eventSrc  =  e;
    
if  (arguments.length  ==   0 ) WebCalendar.objExport  =  e;
    
else  WebCalendar.objExport  =  eval(arguments[ 0 ]);

    WebCalendar.iframe.tableWeek.style.cursor 
=  WebCalendar.drag  ?   " move "  :  " default " ;
    
var  t  =  e.offsetTop,  h  =  e.clientHeight, l  =  e.offsetLeft, p  =  e.type;
    
while  (e  =  e.offsetParent) {t  +=  e.offsetTop; l  +=  e.offsetLeft;}
    o.display 
=   "" ; WebCalendar.iframe.document.body.focus();
    
var  cw  =  WebCalendar.calendar.clientWidth, ch  =  WebCalendar.calendar.clientHeight;
    
var  dw  =  document.body.clientWidth, dl  =  document.body.scrollLeft, dt  =  document.body.scrollTop;
    
    
if  (document.body.clientHeight  +  dt  -  t  -  h  >=  ch) o.top  =  (p == " image " ) ?  t  +  h : t  +  h  +   6 ;
    
else  o.top   =  (t  -  dt  <  ch)  ?  ((p == " image " ) ?  t  +  h : t  +  h  +   6 ) : t  -  ch;
    
if  (dw  +  dl  -  l  >=  cw) o.left  =  l;  else  o.left  =  (dw  >=  cw)  ?  dw  -  cw  +  dl : dl;

    
if   ( ! WebCalendar.timeShow) WebCalendar.dateReg  =   /^ (d { 1 , 4 } )( -| /| .)(d { 1 , 2 } ) 2 (d { 1 , 2 } )$ / ;
    
else  WebCalendar.dateReg  =   /^ (d { 1 , 4 } )( -| /| .)(d { 1 , 2 } ) 2 (d { 1 , 2 } ) (d { 1 , 2 } ):(d { 1 , 2 } ):(d { 1 , 2 } )$ / ;

    
try {
        
if  (WebCalendar.objExport.value.trim()  !=   "" ) {
            WebCalendar.dateStyle 
=  WebCalendar.objExport.value.trim().match(WebCalendar.dateReg);
            
if  (WebCalendar.dateStyle  ==   null )
            
{
                WebCalendar.thisYear   
=   new  Date().getFullYear();
                WebCalendar.thisMonth  
=   new  Date().getMonth() +   1 ;
                WebCalendar.thisDay    
=   new  Date().getDate();
                alert(
" 原文本框里的日期有错误! 可能与你定义的显示时分秒有冲突! " );
                writeCalendar(); 
return   false ;
            }

            
else
            
{
                WebCalendar.thisYear   
=  parseInt(WebCalendar.dateStyle[ 1 ],  10 );
                WebCalendar.thisMonth  
=  parseInt(WebCalendar.dateStyle[ 3 ],  10 );
                WebCalendar.thisDay    
=  parseInt(WebCalendar.dateStyle[ 4 ],  10 );
                WebCalendar.inputDate  
=  parseInt(WebCalendar.thisDay,  10 )  + " / " +  parseInt(WebCalendar.thisMonth,  10 )  + " / " +  
                parseInt(WebCalendar.thisYear, 
10 ); writeCalendar();
            }

        }
   else  writeCalendar();
    }
   catch (e) {writeCalendar();}
}

function  funMonthSelect()  // 月份的下拉框
{
    
var  m  =  isNaN(parseInt(WebCalendar.thisMonth,  10 ))  ?   new  Date().getMonth()  +   1  : parseInt(WebCalendar.thisMonth);
    
var  e  =  WebCalendar.iframe.document.forms[ 0 ].tmpMonthSelect;
    
for  ( var  i = 1 ; i < 13 ; i ++ ) e.options.add( new  Option(i  + " 月 " , i));
    e.style.display 
=   "" ; e.value  =  m; e.focus(); window.status  =  e.style.top;
}

function  funYearSelect()  // 年份的下拉框
{
    
var  n  =  WebCalendar.yearFall;
    
var  e  =  WebCalendar.iframe.document.forms[ 0 ].tmpYearSelect;
    
var  y  =  isNaN(parseInt(WebCalendar.thisYear,  10 ))  ?   new  Date().getFullYear() : parseInt(WebCalendar.thisYear);
        y 
=  (y  <=   1000 ) ?   1000  : ((y  >=   9999 ) ?   9999  : y);
    
var  min  =  (y  -  n  >=   1000 )  ?  y  -  n :  1000 ;
    
var  max  =  (y  +  n  <=   9999 )  ?  y  +  n :  9999 ;
        min 
=  (max  ==   9999 )  ?  max - n * 2  : min;
        max 
=  (min  ==   1000 )  ?  min + n * 2  : max;
    
for  ( var  i = min; i <= max; i ++ )
    
{
      
// alert(e.options.length);
      e.options[e.options.length]  =   new  Option(i  + " 年 " , i + "" ,  true ,  true ); // e.options.add(new Option(i +"年", i));
    }

    e.style.display 
=   "" ;
    e.value 
=  y; e.focus();
}

function  prevM()   // 往前翻月份
{
    WebCalendar.thisDay 
=   1 ;
    
if  (WebCalendar.thisMonth == 1 )
    
{
        WebCalendar.thisYear
-- ;
        WebCalendar.thisMonth
= 13 ;
    }

    WebCalendar.thisMonth
-- ; writeCalendar();
}

function  nextM()   // 往后翻月份
{
    WebCalendar.thisDay 
=   1 ;
    
if  (WebCalendar.thisMonth == 12 )
    
{
        WebCalendar.thisYear
++ ;
        WebCalendar.thisMonth
= 0 ;
    }

    WebCalendar.thisMonth
++ ; writeCalendar();
}

function  prevY() {WebCalendar.thisDay  =   1 ; WebCalendar.thisYear -- ; writeCalendar();} // 往前翻 Year
function  nextY() {WebCalendar.thisDay  =   1 ; WebCalendar.thisYear ++ ; writeCalendar();} // 往后翻 Year
function  hiddenSelect(e) { for ( var  i = e.options.length; i >- 1 ; i -- )e.options.remove(i); e.style.display = " none " ;}
function  getObjectById(id) {  if (document.all)  return (eval( " document.all. " +  id));  return (eval(id)); }
function  hiddenCalendar() {getObjectById( " meizzCalendarLayer " ).style.display  =   " none " ;} ;
function  appendZero(n) { return (( " 00 " +  n).substr(( " 00 " +  n).length - 2 ));} // 日期自动补零程序
function  String.prototype.trim() { return   this .replace( / ( ^ s * ) | (s * $) / g, "" );}
function  dayMouseOver()
{
    
this .className  =   " over " ;
    
this .style.backgroundColor  =  WebCalendar.darkColor;
    
if (WebCalendar.day[ this .id.substr( 8 )].split( " / " )[ 1 ]  ==  WebCalendar.thisMonth)
    
this .style.color  =  WebCalendar.lightColor;
}

function  dayMouseOut()
{
    
this .className  =   " out " ;  var  d  =  WebCalendar.day[ this .id.substr( 8 )], a  =  d.split( " / " );
    
this .style.removeAttribute( ' backgroundColor ' );
    
if (a[ 1 ]  ==  WebCalendar.thisMonth  &&  d  !=  WebCalendar.today)
    
{
        
if (WebCalendar.dateStyle  &&  a[ 0 ]  ==  parseInt(WebCalendar.dateStyle[ 4 ],  10 ))
        
this .style.color  =  WebCalendar.lightColor;
        
this .style.color  =  WebCalendar.wordColor;
    }

}

function  writeCalendar()  // 对日历显示的数据的处理程序
{
    
var  y  =  WebCalendar.thisYear;
    
var  m  =  WebCalendar.thisMonth; 
    
var  d  =  WebCalendar.thisDay;
    WebCalendar.daysMonth[
1 ]  =  ( 0 == y % 4   &&  (y % 100 != 0   ||  y % 400 == 0 ))  ?   29  :  28 ;
    
if  ( ! (y <= 9999   &&  y  >=   1000   &&  parseInt(m,  10 ) > 0   &&  parseInt(m,  10 ) < 13   &&  parseInt(d,  10 ) > 0 )) {
        alert(
" 对不起,你输入了错误的日期! " );
        WebCalendar.thisYear   
=   new  Date().getFullYear();
        WebCalendar.thisMonth  
=   new  Date().getMonth() +   1 ;
        WebCalendar.thisDay    
=   new  Date().getDate(); }

    y 
=  WebCalendar.thisYear;
    m 
=  WebCalendar.thisMonth;
    d 
=  WebCalendar.thisDay;
    WebCalendar.iframe.meizzYearHead.innerText  
=  y  + "  年 " ;
    WebCalendar.iframe.meizzYearMonth.innerText 
=  parseInt(m,  10 )  + "  月 " ;
    WebCalendar.daysMonth[
1 ]  =  ( 0 == y % 4   &&  (y % 100 != 0   ||  y % 400 == 0 ))  ?   29  :  28 ;  // 闰年二月为29天
     var  w  =   new  Date(y, m - 1 ,  1 ).getDay();
    
var  prevDays  =  m == 1    ?  WebCalendar.daysMonth[ 11 ] : WebCalendar.daysMonth[m - 2 ];
    
for ( var  i = (w - 1 ); i >= 0 ; i -- )  // 这三个 for 循环为日历赋数据源(数组 WebCalendar.day)格式是 d/m/yyyy
     {
        WebCalendar.day[i] 
=  prevDays  + " / " +  (parseInt(m,  10 ) - 1 )  + " / " +  y;
        
if (m == 1 ) WebCalendar.day[i]  =  prevDays  + " / " +   12   + " / " +  (parseInt(y,  10 ) - 1 );
        prevDays
-- ;
    }

    
for ( var  i = 1 ; i <= WebCalendar.daysMonth[m - 1 ]; i ++ ) WebCalendar.day[i + w - 1 ]  =  i  + " / " +  m  + " / " +  y;
    
for ( var  i = 1 ; i < 39 - w - WebCalendar.daysMonth[m - 1 ] + 1 ; i ++ )
    
{
        WebCalendar.day[WebCalendar.daysMonth[m
- 1 ] + w - 1 + i]  =  i  + " / " +  (parseInt(m,  10 ) + 1 )  + " / " +  y;
        
if (m == 12 ) WebCalendar.day[WebCalendar.daysMonth[m - 1 ] + w - 1 + i]  =  i  + " / " +   1   + " / " +  (parseInt(y,  10 ) + 1 );
    }

    
for ( var  i = 0 ; i < 39 ; i ++ )     // 这个循环是根据源数组写到日历里显示
     {
        
var  a  =  WebCalendar.day[i].split( " / " );
        WebCalendar.dayObj[i].innerText    
=  a[ 0 ];
        WebCalendar.dayObj[i].title        
=  a[ 2 ]  + " - " +  appendZero(a[ 1 ])  + " - " +  appendZero(a[ 0 ]);
        WebCalendar.dayObj[i].bgColor      
=  WebCalendar.dayBgColor;
        WebCalendar.dayObj[i].style.color  
=  WebCalendar.wordColor;
        
if  ((i < 10   &&  parseInt(WebCalendar.day[i],  10 ) > 20 )  ||  (i > 27   &&  parseInt(WebCalendar.day[i],  10 ) < 12 ))
            WebCalendar.dayObj[i].style.color 
=  WebCalendar.wordDark;
        
if  (WebCalendar.inputDate == WebCalendar.day[i])     // 设置输入框里的日期在日历上的颜色
         {WebCalendar.dayObj[i].bgColor  =  WebCalendar.darkColor; WebCalendar.dayObj[i].style.color  =  WebCalendar.lightColor;}
        
if  (WebCalendar.day[i]  ==  WebCalendar.today)       // 设置今天在日历上反应出来的颜色
         {WebCalendar.dayObj[i].bgColor  =  WebCalendar.todayColor; WebCalendar.dayObj[i].style.color  =  WebCalendar.lightColor;}
    }

}

function  returnDate()  // 根据日期格式等返回用户选定的日期
{
    
if (WebCalendar.objExport)
    
{
        
var  returnValue;
        
var  a  =  (arguments.length == 0 )  ?  WebCalendar.day[ this .id.substr( 8 )].split( " / " ) : arguments[ 0 ].split( " / " );
        
var  d  =  WebCalendar.format.match( /^ (w { 4 } )( -| /| . | )(w { 1 , 2 } ) 2 (w { 1 , 2 } )$ / );
        
if (d == null ) {alert( " 你设定的日期输出格式不对! 请重新定义 WebCalendar.format ! " );  return   false ;}
        
var  flag  =  d[ 3 ].length == 2   ||  d[ 4 ].length == 2 ;  // 判断返回的日期格式是否要补零
        returnValue  =  flag  ?  a[ 2 ]  + d[ 2 ] +  appendZero(a[ 1 ])  + d[ 2 ] +  appendZero(a[ 0 ]) : a[ 2 ]  + d[ 2 ] +  a[ 1 ]  + d[ 2 ] +  a[ 0 ];
        
if (WebCalendar.timeShow)
        
{
            
var  h  =   new  Date().getHours(), m  =   new  Date().getMinutes(), s  =   new  Date().getSeconds();
            returnValue 
+=  flag  ?   "   " +  appendZero(h)  + " : " +  appendZero(m)  + " : " +  appendZero(s) :  "   " +   h   + " : " +  m  + " : " +  s;
        }

        WebCalendar.objExport.value 
=  returnValue;
        hiddenCalendar();
    }

}

function  document.onclick()
{
    
if (WebCalendar.eventSrc  !=  window.event.srcElement) hiddenCalendar();
}

 

 

 

第二步:新增一个页面TestCalendar.htm,内容如下:

 

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< html >
    
< head >
        
< meta  http-equiv ="Content-Type"  content ="text/html; charset=gb2312" >
        
< title > 日期控件 </ title >
        
< style  type ="text/css" > .input1  {  BORDER-RIGHT :  #d4d4d4 1px solid ;  BORDER-TOP :  #d4d4d4 1px solid ;  FONT-SIZE :  12px ;  BORDER-LEFT :  #d4d4d4 1px solid ;  BORDER-BOTTOM :  #d4d4d4 1px solid ;  BACKGROUND-COLOR :  #ffffff  }  .input1  {  BORDER-RIGHT :  #666666 1px solid ;  BORDER-TOP :  #666666 1px solid ;  FONT-SIZE :  12px ;  BORDER-LEFT :  #666666 1px solid ;  BORDER-BOTTOM :  #666666 1px solid ;  BACKGROUND-COLOR :  #ffffff  }  .text1  {  FONT-SIZE :  12px ;  LINE-HEIGHT :  18px ;  FONT-FAMILY :  "Arial", "Helvetica", "sans-serif"  }  .style6  {  FONT-SIZE :  10px ;  LINE-HEIGHT :  18px ;  FONT-FAMILY :  "Arial", "Helvetica", "sans-serif"  }  .font00  {  FONT-SIZE :  12px  }  .font120  {  FONT-SIZE :  14px ;  LINE-HEIGHT :  23px ;  FONT-FAMILY :  "Arial", "Helvetica", "sans-serif"  }  .style7  {  FONT-WEIGHT :  bold ;  FONT-SIZE :  12px ;  COLOR :  #3c8acd ;  FONT-FAMILY :  "Arial", "Helvetica", "sans-serif"  }  .text11  {  FONT-SIZE :  14px ;  FONT-FAMILY :  "Arial", "Helvetica", "sans-serif"  }  .style22  {  COLOR :  #ff0000  }  .text12  {  FONT-SIZE :  12px ;  FONT-FAMILY :  "Arial", "Helvetica", "sans-serif"  }  .PromptMSG  {  FONT-SIZE :  12px ;  COLOR :  #ff0000 ;  FONT-FAMILY :  "Arial", "Helvetica", "sans-serif"  }   </ style >
        
< script  src ="JS/Calendar.js"  type ="text/javascript" ></ script >
    
</ head >
    
< body >
        
< table  ID ="Table1" >
            
< tr >
                
< TD  class ="style7"  noWrap height ="30" > 生 日:  < INPUT  class ="input1"  id ="Birthday"  onfocus ="calendar()"  maxLength ="10"  name ="Birthday" >
                    
< FONT  color ="#ff0000" > * </ FONT >  (yyyy-MM-dd)
                    
< DIV  class ="PromptMSG"  id ="divBirthday" ></ DIV >
                
</ TD >
            
</ tr >
        
</ table >
    
</ body >
</ html >

 

 

 

2345完整无错版万年历 网上很多关于2345万年历程序,但都不能显示黄历,看到39查询www.39ca.com的日历和2345的一样,于是把他弄了下来 立即下载

相关推荐

梅花雨日历控件

JS日历控件 支持免费资源

antd的Calendar日历自定义单元格数据刷新不及时

项目场景: 用日历显示日志状态 问题描述: 想重新选择年月查看日志状态,查到数据了,但是dateCellRender 方法已经执行完毕了,导致刷新不及时,点击一下日历面板 才能显示 原因分析: 官方给的文档每个日期渲染的单元格数据是无状态的,可以把dateCellRender函数设置成一个有状态的组件,当数据变化时,在重新render 下面是一个简单的示例代码 ...

nba136667854的博客 2586

Kalendae日历控件+layer弹框

包含了一些扩展方法如://清空选择、返回本月、快速选择、单击事件【获取单击的日期】等

java日历源代码分析_java作的日历的源代码 - 编程入门网

import java.awt.*;import java.awt.event.*;import java.util.*;public class CalenderCreator extends Frame{Button days[]=new Button[49];Choice Month=new Choice();Choice Year=new Choice();Label lmonth=new...

weixin_42488997的博客 200

一个好用的梅花雨控件

一个比较好用的JS日历控件,用的时候自己更改一下后缀就可以了

梅花雨控件

梅花雨控件

JAVA----日历源代码

1:先创建一个CalendarBean类: 代码: importjava.util.Calendar; publicclassCalendarBean { Stringday[]; intyear=2005,month=0; publicvoidsetYear(intyear) { ...

weixin_30646505的博客 555

修正:支持Chrome、FireFox的梅花雨日历控件3.0修正版

今天刚刚又修正了2个问题,但是因为这里不让编辑上传的文件,大家还是去我的博客下载吧: http://beinet.cn/Blog/BlogShow.aspx?id=c1c31322-f824-41a7-bc03-6b5ca98e4906 因为公司需要支持多版本的浏览器,再把我07年修正的那个版本拿来修改了一下, 在IE6,IE7,IE8,chrome谷歌浏览器6.0.472.55,FireFox火狐3.6.8下测试通过 需要说明的是,测试时间不多,所以可能测试不够详细,欢迎大家指出bug,并在我的博客发表回复:http://beinet.cn 注意:刚刚测出一个bug,请用记事本打开:

fullCalendar日历控件改变日期事件不刷新

$('#currentMonthContainer').fullCalendar('gotoDate', $('#laydate-yezl').val()); 在加载日历数据之前加上下面这句跳到指定日期,日期可以用jQuery获取日期选择框中刚选择的数据,这样就能刷新了日历了。

qq_18547341的博客 1638

脑影像分析工具JuSpace:跨模态关联的神经递质系统研究利器

JuSpace是一款专业的脑影像分析软件,专为跨模态关联研究设计。它能够将功能或结构磁共振影像与神经递质PET/SPECT图谱进行空间关联分析,帮助研究者探索宏观脑影像异常与微观神经化学系统(如多巴胺、血清素)之间的潜在联系,是神经精神疾病机制研究的强大工具。

c2d3e4f的博客 541

新手友好的PythonUI库PySimpleGUI项目已下架,切换4.50.6版本的方法

过期后,如果还想使用 PySimpleGUI,则需要切换到版本 4,而版本 4 在 GitHub 上有很多社区维护的版本可以选择。开发团队尝试了 7 年,但始终没能获得足够的收入来维持项目的运营,尤其是开源项目通常面临资金不足的问题。商业许可证是永久有效的,用户可以在支持期结束后依然使用应用程序,并会提供离线版本的文档以供参考。尽管项目关闭,但对购买了商业许可证的用户,团队仍会在接下来的一年内提供支持。

baidu_34681715的博客 6857

微信小程序日历界面编写

日历展示及切换实现

qq_62608650的博客 2012

OnePlus救砖指南:线刷包与OTA全量包实战解析

本文详细解析了OnePlus手机救砖的两种核心方法:线刷包与OTA全量包。针对手机变砖的不同状况(如黑屏、能进Recovery等),文章提供了清晰的判断标准和对应的实战操作指南。重点阐述了线刷包作为终极救砖手段的底层原理与详细步骤,并对比了OTA全量包作为温和修复方案的使用场景与卡刷流程,旨在帮助用户安全、有效地恢复手机系统。

weixin_28312391的博客 1313

谷歌日历控件php管理系统,修改Calendar日历控件 兼容IE9,谷歌,火狐

修改Calendar日历控件 兼容IE9,谷歌,火狐。只是能用,出现的位置有所不同,希望有高手再帮我改改吧,谢谢一、[javascript]this.iframe = window.frames("meizzCalendarIframe");修改为[javascript]this.iframe = window.frames["meizzCalendarIframe"];二、[ja...

weixin_39911916的博客 243

USB2.0协议解读

就写到这吧,其他协议层等属于软件需要了解的东西了。简单看了下,本文总结的有点乱,有两个原因吧,其一是理解的不够透彻,无法用简单明了的语言总结;其二是感觉这个协议文档章节划分的也不是很好,有点大杂烩。

qflook的博客 3673

SAP_PP模块跑完 MRP,MD04 里却看不到“计划订单”?排查这 3 个最容易被忽略的主数据参数

MRP 是 SAP 逻辑最严密的模块之一,它绝不会随机罢工。当 MD04 里看不到计划订单时,请不要怀疑系统的计算能力。99% 的情况,都是因为我们给系统下达了矛盾的指令:一边告诉它“我有需求”,一边却通过主数据告诉它“不要计划”、“不要触发”或者“我是冻结的”。掌握这 3 个排查点,你就能在 5 分钟内解决大部分“MRP 失灵”的悬案,成为用户眼中的“系统神医”。

我小时候很黑的博客 588

第一次使用梅花雨日历控件

今天是第一天去这个新单位报到。虽然没给安排什么工作。但是听新同事们在聊天时谈的东西。感觉自己差的不是一点半点啊。在看他们的一个项目页面时发现有一个日历控件。这个自己以前只是听说过。但是从来没有用过。总是感觉哪种东西自己用不到。可是现在一看不一样了。所以就上网查了一下。找到这个梅花雨3.0的。自己用了一下。总得感觉网上说的差不多,但我是放在.net中用的。所以有一些地方是要改动的。下面是梅花雨3.0

我本无名的专栏 2279

即插即用系列(代码实践)| 2025 Strip R-CNN:大尺寸条形卷积——遥感目标检测新SOTA,专治细长目标(桥梁、船只)

摘要: 论文《Strip R-CNN: Large Strip Convolution for Remote Sensing Object Detection》针对遥感图像中细长目标(如桥梁、道路)检测难题,提出创新性解决方案。通过设计StripBlock模块,将传统方形卷积核替换为大尺寸条形卷积(水平1×19与垂直19×1组合),有效捕获长距离空间特征,同时减少背景噪声。结合CenterPooling增强目标中心定位,该模块可即插即用至现有网络,显著提升遥感检测任务(如DOTA数据集)的精度。代码已开源,

分享顶会顶刊论文即插即用模块 189

js日期格式月份日期不足两位前补0

最近在做的项目中有对日期的对比 发现Js提供的getMonth()获取到的月份不保留两位:01,02这样的。 var curDate = new Date(); var curMonth = curDate.getMonth()+1; 这里补充一下为什么需要加1,因为插件中“getMonth()日期函数的值域是0-11”,所以需要加一。 对于获取到的月份没有保留两位问题,...

weixin_41167961的博客 9532

杰理SDK入门教程(二):USB升级程序

开发板升级操作指南 摘要:本文介绍了开发板程序升级的两种方式(常规升级和串口升级),重点说明了常规升级的操作步骤: 拨码设置:提供4种拨码方式(不拨/1档/2档/3档),对应不同指示灯状态和按键要求 硬件连接:强制升级工具需正确连接电脑和开发板(注意USB接口方向) 升级流程:根据拨码状态操作按键,观察指示灯变化(红灯常亮绿灯灭表示进入升级模式) 执行升级:运行SDK中的download.bat完成升级 文中还包含拨码开关说明、指示灯状态对照表以及升级原理说明,帮助用户理解升级过程。升级成功后在设备管理器可

qq_42014563的博客 1114

YOLOP v2!YOLOv7结合YOLOP的多任务版本 更好、更快、更强

YOLOP v2!YOLOv7结合YOLOP的多任务版本 更好、更快、更强

jacke121的专栏 2705
上一篇: PowerPoint文档“大减肥”(downmoon)
下一篇: 检测浏览器是否接受Cookies(Downmoon)?
downmoon
博客等级 码龄24年 1676粉丝 494原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值