JavaScript做的ASP.NET的日期控件,很好用,推荐!

本文介绍了一种使用JavaScript自定义的日历控件实现方法,包括如何创建弹出日历窗口、设置样式、切换年月及选择日期等功能。通过详细代码展示了整个日历控件的构建过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引用方法,如下:

<script language="javascript" type="text/javascript" src="Date.js"></script>
<input type="text" id="Date1" runat="server" readonly="readonly" /><input type="button" value="选择" onclick="popUpCalendar(Date1,'true');"/>

 

下面是Data.js的代码,将其拷到JS文件中,保存一下,注意文件格式要保存成UNICODE格式的。

 

var

showTime;

//是否必须点‘确定’按钮选择日期,true为必须,false直接选中,默认为false

var

needClickBtnOK = false;

//控件的暗色,默认为"#AAAAAA"

var

DarkColor;

//控件的亮色,默认为"#EEEEEE"

var

LightColor;

//控件的按钮背景色,默认为"#E6E6F6"

var

BtnBgColor;

//控件的文字颜色,默认为"#000080"

var

WordColor;

//控件的暗文字颜色,默认为"#AAAAAA"

var

WordDark;

//日期数字背景色,默认为"#DDDDDD"

var

DayBgColor;

//今天在日历上的标示背景色,默认为"#DD8333"

var

TodayColor;

//日期显示的立体表达色,默认为"#777777"

var

DarkBorder;

/**********************************************************

**********************************************************/

var

value;

var

strIframe;

var

popDiv;

var

popUp;

var

ifmElement;

var

ifm;

var

inputText;

var

nowTimeTemp;

var

WebCalendarWidth;

var

WebCalendarNowSelect;

var

WebCalendarDaysMonth;

var

WebCalendarDay;

var

WebCalendarDayObj;

var

WebCalendarDateStyle;

var

WebCalendarObjExport;

var

WebCalendarInputDate;

var

WebCalendarThisYear;

var

WebCalendarThisMonth;

var

WebCalendarThisDay;

var

WebCalendarToday;

var

WebCalendarDateReg;

var

WebCalendarYearFall;

var

WebCalendarFormat;

var

WebCalendarTimeShow;

var

WebCalendarDarkColor;

var

WebCalendarLightColor;

var

WebCalendarBtnBgColor;

var

WebCalendarWordColor;

var

WebCalendarWordDark;

var

WebCalendarDayBgColor;

var

WebCalendarTodayColor;

var

WebCalendarDarkBorder;

 

//弹出日历选择窗口,ctr为要设置日期的文本输入框id;

//showtime为是否显示时间,'true'为显示,'false'只显示日期

function

popUpCalendar(ctr,showtime){

try

{

if (showtime != 'true' && showtime != 'false')

{

alert(

"参数showtime必须为'true'或'false'");

return -1;

}

showTime=showtime;

popUp=

null;

initIt(ctr);

}

catch(exp){

}

}

function

initIt(ctr){

inputText = ctr;

value = inputText.value;

initVar();

showCalendar();

}

function

initVar(){

WebCalendarDaysMonth =

new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

WebCalendarDay =

new Array(42); //定义日历展示用的数组

WebCalendarDayObj =

new Array(42); //定义日期展示控件数组

WebCalendarDateStyle =

null; //保存格式化后日期数组

WebCalendarObjExport =

null; //日历回传的显示控件

WebCalendarInputDate =

null; //转化外的输入的日期(d/m/yyyy)

WebCalendarThisYear =

new Date().getFullYear(); //定义年的变量的初始值

WebCalendarThisMonth =

new Date().getMonth()+ 1; //定义月的变量的初始值

WebCalendarThisDay =

new Date().getDate(); //定义日的变量的初始值

//今天(d/m/yyyy)

WebCalendarToday = WebCalendarThisDay +

"/"+ WebCalendarThisMonth + "/" + WebCalendarThisYear;

WebCalendarNowSelect = WebCalendarToday;

WebCalendarDateReg =

""; //日历格式验证的正则式

WebCalendarYearFall = 50;

//定义年下拉框的年差值

WebCalendarFormat =

"yyyy-mm-dd"; //回传日期的格式

//是否返回时间

WebCalendarTimeShow = (showTime !=

null && showTime != 'false');

if (WebCalendarTimeShow){

WebCalendarWidth = 255;

}

else{

WebCalendarWidth = 242;

}

//控件的暗色

WebCalendarDarkColor = (DarkColor==

null) ? "#AAAAAA" : DarkColor;

//控件的亮色

WebCalendarLightColor = (LightColor==

null) ? "#EEEEEE" : LightColor;

//控件的按钮背景色

WebCalendarBtnBgColor = (BtnBgColor==

null) ? "#E6E6F6" : BtnBgColor;

//控件的文字颜色

WebCalendarWordColor = (WordColor==

null) ? "#000080" : WordColor;

//控件的暗文字颜色

WebCalendarWordDark = (WordDark==

null) ? "#AAAAAA" : WordDark;

//日期数字背景色

WebCalendarDayBgColor = (DayBgColor==

null) ? "#DDDDDD" : DayBgColor;

//今天在日历上的标示背景色

WebCalendarTodayColor = (TodayColor==

null) ? "#DD8333" : TodayColor;

//日期显示的立体表达色

WebCalendarDarkBorder = (DarkBorder==

null) ? "#777777" : DarkBorder;

nowTimeTemp =

new Date();

nowTimeTemp.setHours(0);

nowTimeTemp.setMinutes(0);

nowTimeTemp.setSeconds(0);

if (value != null && value.trim().length > 0){

var timeStr = value;

var spaceP = timeStr.indexOf(" ");

var timeStr = timeStr.substr(spaceP);

var timesArray = timeStr.split(":");

var hnn = timesArray[0];

var mnn = timesArray[1];

var snn = timesArray[2];

nowTimeTemp.setHours(hnn);

nowTimeTemp.setMinutes(mnn);

nowTimeTemp.setSeconds(snn);

}

}

function

showCalendar(){

if (popUp==null) {

popUp = window.createPopup();

var oPopBody = popUp.document.body;

writeIframe();

}

//edit 2005-11-23

if(WebCalendarTimeShow){

popUp.show(

event.screenX+10 , event.screenY+10 , WebCalendarWidth+2, 220);

}

else{

popUp.show(

event.screenX+10 , event.screenY+10 , WebCalendarWidth+2, 214);

}

//popUp.show( event.screenX+10 , event.screenY+10 , WebCalendarWidth+2, 214);

calendar();

}

function

Iframe(){

try{

var selYLeft = 58;

var selMleft=133;

/*if(WebCalendarTimeShow){

selYLeft=58;

selMleft=133;

}*/

strIframe =

"<html><head><meta http-equiv='Content-Type' content='text/html; charset=gb2312'><style>" + "*{font-size: 12px; font-family: 宋体}" + ".bg{ color: " + WebCalendarLightColor + "; cursor: default; background-color: " + WebCalendarDarkColor + ";}" +

"table#tableMain{ width: "+WebCalendarWidth+"; height: 180;}" +

" table#tableWeek td{ text-align:center; color: " + WebCalendarLightColor + ";}" +

"table#tableDay td{ font-weight: bold;}" +

"td#kxYearHead, td#kxYearMonth{ text-align:center; color: " + WebCalendarWordColor + "}" +

".over { text-align: center; border-top: 1px solid " + WebCalendarLightColor + ";border-left: 1px solid " + WebCalendarLightColor + ";" + "border-right: 1px solid " + WebCalendarDarkBorder + "; border-bottom: 1px solid " + WebCalendarDarkBorder + ";}" +

".selected { text-align: center; border-top: 1px solid " + WebCalendarDarkBorder + ";border-left: 1px solid " + WebCalendarDarkBorder + ";" + "border-right: 1px solid " + WebCalendarLightColor + "; border-bottom: 1px solid " + WebCalendarLightColor + ";}" +

".out{ text-align: center; border-top: 1px solid " + WebCalendarLightColor + "; border-left: 1px solid " + WebCalendarLightColor + ";" + "border-bottom: 1px solid " + WebCalendarDarkBorder + "; border-right: 1px solid " + WebCalendarDarkBorder + "}" +

".inputstyle{ border: 1px solid " + WebCalendarDarkColor

+

"; padding-top: 1px; height: 20; cursor: hand;" + " color:" + WebCalendarWordColor + "; background-color: " + WebCalendarBtnBgColor + "}" +

"</style></head>";

strIframe+=

"<body onselectstart='return false;' scrolling='no' style='overflow:hidden;margin: 0px;border: 1px solid "+WebCalendarDarkBorder+";' oncontextmenu='return false;'><form id=kx>";

strIframe +=

"<select id='tmpYearSelect' style='z-index:1;position:absolute;top:3;left:"+selYLeft+";display:none'>"+

"</select>"+

"<select id='tmpMonthSelect' style='z-index:1; position:absolute;top:3;left:"+selMleft+";display:none'"+

"></select>"+

"<table id=tableMain class=bg border=0 cellspacing=0 cellpadding=1>"+

"<tr><td height=20 bgcolor='"+ WebCalendarLightColor +"'>"+

" <table width=100% id=tableHead border=0 cellspacing=1 cellpadding=0><tr align=center>"+

" <td width='50' align='left' height=20 class=bg ><input id=prevYear title='向前翻 1 年' class='inputstyle' type=button value='&lt;&lt; '"+

" onfocus='this.blur()' style='kx:expression(this.disabled=parent.WebCalendarThisYear==1000)'><input"+

" onfocus='this.blur()' id=prevMonth title='向前翻 1 月' class='inputstyle' type=button value=' &lt;&nbsp;'></td>"+

" <td width='120' id=kxYearHead title='点击此处选择年份'"+

" onmouseover=/"this.bgColor='"+WebCalendarDarkColor+"'; this.style.color='"+WebCalendarLightColor+"';/""+

" onmouseout=/"this.bgColor='"+WebCalendarLightColor+"'; this.style.color='"+WebCalendarWordColor+"';/"></td>"+

" <td width='120' id=kxYearMonth title='点击此处选择月份'"+

" onmouseover=/"this.bgColor='"+WebCalendarDarkColor+"'; this.style.color='"+WebCalendarLightColor+"'/""+

" onmouseout=/"this.bgColor='"+WebCalendarLightColor+"'; this.style.color='"+WebCalendarWordColor+"'/"></td>"+

" <td align='right' class=bg ><input title='向后翻 1 月' class='inputstyle' id=nextMonth type=button value='&nbsp;&gt; '"+

" onfocus='this.blur()'><input id=nextYear title='向后翻 1 年' class='inputstyle' type=button value='&gt;&gt; '"+

" onfocus='this.blur()' style='kx:expression(this.disabled=parent.WebCalendarThisYear==9999)'></td></tr></table>"+

"</td></tr><tr><td height=20px>";

strIframe +=

"<table id=tableWeek border=1 width=100% cellpadding=0 cellspacing=0";

strIframe +=

" borderColorLight='#888888' borderColorDark='#DDDDDD'>"+

" <tr align='center' height=20px><td background='#CCC000'>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr></table>"+

"</td></tr><tr><td valign='middle' height='122px'>"+

" <table bgcolor='"+WebCalendarDarkColor+"' id=tableDay height='100%' width='100%' cellspacing=0 cellpadding=0>";

//new Array ("Sun","Mon","Tue","Wed","Thu","Fri","Sat")

for (var x = 0; x < 5; x++)

{

strIframe +=

"<tr height='20px'>";

for (var y = 0; y < 7; y++)

strIframe +=

"<td class=out id='kxDay" + (x * 7+y) + "'></td>";

strIframe +=

"</tr>";

}

strIframe +=

"<tr>";

for(var x=35; x<42; x++) {

strIframe +=

"<td class=out id='kxDay"+ x +"'></td>";

}

strIframe +=

"</tr></table>"+

" </td></tr><tr><td height=20 bgcolor='"+ WebCalendarLightColor +"'>"+

" <table border=0 cellpadding=1 cellspacing=0 width=100%>"+

" <tr height='18px'><td id='nowSelectObj' width='89px'>&nbsp;</td><td colspan=2 align='left'>";

if (WebCalendarTimeShow){

//var nowTimeTemp = new Date();

strIframe+=

"<INPUT type='text' readonly id='hou' style='LEFT: 84px; WIDTH: 20px; POSITION: absolute; TOP: 172px; HEIGHT: 16px'>";

strIframe+=

"<INPUT id='addhour' style='Z-INDEX: 101; LEFT: 105px; WIDTH: 16px; POSITION: absolute; TOP: 172px; HEIGHT: 8px' type='button' value=''>";

strIframe+=

"<INPUT id='subhour' style='Z-INDEX: 102; LEFT: 105px; WIDTH: 16px; POSITION: absolute; TOP: 181px; HEIGHT: 8px' type='button' value=''>";

strIframe+=

"<span style='LEFT: 122px; POSITION: absolute; '>时</span>";

strIframe+=

"<INPUT id='min' readonly style='LEFT: 137px; WIDTH: 20px; POSITION: absolute; TOP: 172px; HEIGHT: 16px' type='text'>";

strIframe+=

"<INPUT id='addmin' style='Z-INDEX: 103; LEFT: 158px; WIDTH: 16px; POSITION: absolute; TOP: 172px; HEIGHT: 8px' type='button' value='Button'>";

strIframe+=

"<INPUT id='submin' style='Z-INDEX: 104; LEFT: 158px; WIDTH: 16px; POSITION: absolute; TOP: 181px; HEIGHT: 8px' type='button' value='Button'>";

strIframe+=

"<span style='LEFT: 175px; POSITION: absolute; '>分</span>";

strIframe+=

"<INPUT id='sec' readonly style='LEFT: 190px; WIDTH: 20px; POSITION: absolute; TOP: 172px; HEIGHT: 16px' type='text'>";

strIframe+=

"<INPUT id='addsec' style='Z-INDEX: 105; LEFT: 211px; WIDTH: 16px; POSITION: absolute; TOP: 172px; HEIGHT: 8px' type='button' value='Button'>";

strIframe+=

"<INPUT id='subsec' style='Z-INDEX: 106; LEFT: 211px; WIDTH: 16px; POSITION: absolute; TOP: 181px; HEIGHT: 8px' type='button' value='Button'>";

strIframe+=

"<span style='LEFT: 228px; POSITION: absolute; '>秒</span>";

/*

*/

}

strIframe+=

"&nbsp;</td></tr>"+

" <tr><td align='left'>&nbsp</td><td align=center>"+

" </td><td align='right'><input name=today type=button value='现在' onfocus='this.blur()' class='inputstyle' style='width: 30' title='当前日期'>&nbsp;<input name='doOk' type=button value='确定' onfocus='this.blur()' class='inputstyle' style='width: 30'>&nbsp;<input type='button' name='closeCalendar' value='关闭' class='inputstyle' style='width: 30' title='取消'></td></tr></table>"+

"</td></tr><table></form></body></html>";

}

catch(excp4) {}

}

var

interset;

function

writeIframe(){

if (strIframe == null){

Iframe();

}

with(popUp)

{

document.writeln(strIframe);

document.close();

//document.body.onkeydown=doKeyDown;

with(document.all){

kxYearHead.onclick=funYearSelect;

kxYearMonth.onclick=funMonthSelect;

prevYear.onclick=prevY;

prevMonth.onclick=prevM;

nextMonth.onclick=nextM;

nextYear.onclick=nextY;

today.onclick=setToday;

tmpYearSelect.onchange=newYearSelect;

tmpYearSelect.onblur=hiddenSelect;

tmpMonthSelect.onchange=newMonthSelect;

tmpMonthSelect.onblur=hiddenSelect;

doOk.onclick=returnDate;

closeCalendar.onclick=hiddenCalendar;

for(var i=0; i<42; i++)

{

WebCalendarDayObj[i] = eval(

"kxDay"+ i);

WebCalendarDayObj[i].onmouseover = dayMouseOver;

WebCalendarDayObj[i].onmouseout = dayMouseOut;

WebCalendarDayObj[i].onmouseup = newDateSelect;

//WebCalendarDayObj[i].onclick = newDateSelect;

}

if (WebCalendarTimeShow){

//

//addhour.onclick=addH;

addhour.onmousedown=addHour;

addhour.onmouseup=addaHou;

addhour.onmouseout=stop;

//

//subhour.onclick=subH;

subhour.onmousedown=subHour;

subhour.onmouseup=subaHou;

subhour.onmouseout=stop;

//

//addmin.onclick=addM;

addmin.onmousedown=addMin;

addmin.onmouseup=addaMin;

addmin.onmouseout=stop;

//

//submin.onclick=subM;

submin.onmousedown=subMin;

submin.onmouseup=subaMin;

submin.onmouseout=stop;

//

//addsec.onclick=addS;

addsec.onmousedown=addSec;

addsec.onmouseup=addaSec;

addsec.onmouseout=stop;

//

//subsec.onclick=subS;

subsec.onmousedown=subSec;

subsec.onmouseup=subaSec;

subsec.onmouseout=stop;

//

popUp.document.all.hou.value = appendZero(nowTimeTemp.getHours());

popUp.document.all.min.value = appendZero(nowTimeTemp.getMinutes());

popUp.document.all.sec.value = appendZero(nowTimeTemp.getSeconds());

}

}

}

}

//

function

stop(){

clearInterval(interset);

}

function

addHour(){

clearInterval(interset);

interset=setInterval(

"addH()",120);

}

function

addaHou(){

stop();

addH();

}

function

subaHou(){

stop();

subH();

}

function

subHour(){

clearInterval(interset);

interset=setInterval(

"subH()",120);

}

function

addH(){

var h = parseInt(popUp.document.all.hou.value,10) + 1;

popUp.document.all.hou.value = h > 23?

"00" : (h<10?appendZero(h):h);

}

function

subH(){

var h = parseInt(popUp.document.all.hou.value,10) - 1;

popUp.document.all.hou.value=h < 0 ?

"23" : appendZero(h);

}

function

addaMin(){

stop();

addM();

}

function

subaMin(){

stop();

subM();

}

function

addMin(){

clearInterval(interset);

interset=setInterval(

"addM()",120);

}

function

subMin(){

clearInterval(interset);

interset=setInterval(

"subM()",120);

}

function

addM(){

var m = parseInt(popUp.document.all.min.value,10) + 1;

popUp.document.all.min.value = m > 59?

"00" : appendZero(m);

}

function

subM(){

var m = parseInt(popUp.document.all.min.value,10) - 1;

popUp.document.all.min.value = m < 0?

"59" : appendZero(m);

}

function

addaSec(){

stop();

addS();

}

function

subaSec(){

stop();

subS();

}

function

addSec(){

clearInterval(interset);

interset=setInterval(

"addS()",120);

}

function

subSec(){

clearInterval(interset);

interset=setInterval(

"subS()",120);

}

function

addS(){

var s = parseInt(popUp.document.all.sec.value,10) + 1;

popUp.document.all.sec.value = s > 59?

"00" : appendZero(s);

}

function

subS(){

var s = parseInt(popUp.document.all.sec.value,10) - 1;

popUp.document.all.sec.value = s < 0?

"59" : appendZero(s);

}

//

function

appendZero(n){

return (("00" + n).substr(("00" + n).length - 2));

}

function

String.prototype.trim(){

return this.replace(/(^/s*)|(/s*$)/g,"");

}

function

hiddenSelect(nows){

try{

var ee=nows;

for(var i = (ee.options.length - 1); i > -1; i--)

{

ee.options.remove(i);

}

nows.style.display=

"none";

}

catch(e){}

}

function

hiddenCalendar(){

if(popUp){

if(popUp.isOpen){

popUp.hide();

}

}

}

function

dayMouseOver(){

try{

this.style.backgroundColor = WebCalendarWordDark;

var d = WebCalendarDay[this.id.substr(5)];

if (WebCalendarNowSelect == d) {

return ;

}

this.className = "over";

if (d.split("/")[1] == WebCalendarThisMonth) {

this.style.color = WebCalendarLightColor;

}

else{

this.style.color = WebCalendarLightColor;

}

}

catch(excp5) {}

}

function

dayMouseOut() {

try{

var d = WebCalendarDay[this.id.substr(5)];

if (WebCalendarNowSelect == d) {

if(WebCalendarNowSelect == WebCalendarToday){

this.style.background = WebCalendarTodayColor;

}

return ;

}

if (WebCalendarInputDate==d){

this.bgColor = WebCalendarWordDark;

this.style.color = WebCalendarLightColor;

}

this.className = "out";

a = d.split(

"/");

this.style.removeAttribute('backgroundColor');

if (a[1] == WebCalendarThisMonth && d != WebCalendarToday) {

if (WebCalendarDateStyle && a[0] == parseInt(WebCalendarDateStyle[4], 10)) {

this.style.background = WebCalendarLightColor;

}

this.style.color = WebCalendarWordColor;

}

else if (d == WebCalendarToday){

this.style.color = WebCalendarLightColor;

}

else{

this.style.color = WebCalendarWordDark;

}

}

catch(excp6) {}

}

 

function

newYearSelect(){

WebCalendarThisYear =

this.value;

writeCalendar();

hiddenSelect(popUp.document.all.tmpYearSelect);

}

function

hidenYearSelect(){

hiddenSelect(popUp.document.all.tmpYearSelect);

}

function

newMonthSelect(){

WebCalendarThisMonth=

this.value;

hiddenSelect(popUp.document.all.tmpMonthSelect);

writeCalendar();

}

function

hidenMonthSelect(){

hiddenSelect(popUp.document.all.tmpMonthSelect);

}

function

hiddenAllSelect(){

hidenMonthSelect();

hidenYearSelect();

}

function

setToday(){

WebCalendarNowSelect = WebCalendarToday;

var a = WebCalendarToday.split("/");

WebCalendarThisYear = a[2];

WebCalendarThisMonth = a[1];

WebCalendarThisDay = a[0];

if(WebCalendarTimeShow){

nowTimeTemp =

new Date();

writeIframe();

}

writeCalendar();

}

function

calendar(){

var e = window.event.srcElement;

WebCalendarObjExport = inputText;

if (!WebCalendarTimeShow) WebCalendarDateReg = /^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2})$/;

else WebCalendarDateReg = /^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2}) (/d{1,2}):(/d{1,2}):(/d{1,2})$/;

try

{

if (WebCalendarObjExport.value.trim() != ""){

WebCalendarDateStyle = WebCalendarObjExport.value.trim().match(WebCalendarDateReg);

if (WebCalendarDateStyle == null)

{

WebCalendarThisYear =

new Date().getFullYear();

WebCalendarThisMonth =

new Date().getMonth()+ 1;

WebCalendarThisDay =

new Date().getDate();

alert(

"原文本框里的日期有错误!/n可能与你定义的显示时分秒有冲突!");

writeCalendar();

return false;

}

else

{

WebCalendarThisYear = parseInt(WebCalendarDateStyle[1], 10);

WebCalendarThisMonth = parseInt(WebCalendarDateStyle[3], 10);

WebCalendarThisDay = parseInt(WebCalendarDateStyle[4], 10);

WebCalendarInputDate = parseInt(WebCalendarThisDay, 10) +

"/" +

parseInt(WebCalendarThisMonth, 10) +

"/" +

parseInt(WebCalendarThisYear, 10);

WebCalendarNowSelect = WebCalendarInputDate;

writeCalendar();

return;

}

}

else writeCalendar();

}

catch(e){writeCalendar();}

}

function

funMonthSelect(){

hidenYearSelect();

popUp.document.all.kxYearMonth.innerText=

"";

var y = WebCalendarThisYear;

popUp.document.all.kxYearHead.innerText = y +

" 年";

var m = isNaN(parseInt(WebCalendarThisMonth, 10)) ? (new Date().getMonth() + 1) : parseInt(WebCalendarThisMonth, 10);

var ee = popUp.document.all.tmpMonthSelect;

var tempStrOption = "";

for(var i = 1; i < 13; i++)

{

var op =popUp.document.createElement("OPTION");

op.value = i;

//op.text = i + "月";

op.text = i +

"月";

ee.add(op);

}

ee.style.display =

"inline";

ee.value = m;

try{

ee.focus();

}

catch(ex){}

}

function

funYearSelect(){

hidenMonthSelect();

popUp.document.all.kxYearHead.innerText=

"";

var m = WebCalendarThisMonth;

popUp.document.all.kxYearMonth.innerText = parseInt(m, 10) +

" 月";

var es = popUp.document.forms[0].tmpYearSelect;

var n = WebCalendarYearFall;

var y = isNaN(parseInt(WebCalendarThisYear, 10)) ? (new Date().getFullYear()) : parseInt(WebCalendarThisYear);

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++)

{

var op = popUp.document.createElement("OPTION");

op.value = i;

//op.text = i + "年";

op.text = i +

"年";

es.add(op);

}

es.style.display =

"";

es.value = y;

try{

es.focus();

}

catch(e) {}

}

//往前翻月份

function

prevM()

{

try{

//WebCalendarThisDay = 1;

hidenYearSelect();

hidenMonthSelect();

if (WebCalendarThisMonth==1)

{

WebCalendarThisYear--;

WebCalendarThisMonth=13;

}

WebCalendarThisMonth--;

writeCalendar();

}

catch(e) {}

}

//往后翻月份

function

nextM()

{

try{

//WebCalendarThisDay = 1;

hidenYearSelect();

hidenMonthSelect();

if (WebCalendarThisMonth==12)

{

WebCalendarThisYear++;

WebCalendarThisMonth=0;

}

WebCalendarThisMonth++;

writeCalendar();

}

catch(e) {}

}

//往前翻 Year

function

prevY()

{

try

{

//WebCalendarThisDay = 1;

hidenYearSelect();

hidenMonthSelect();

WebCalendarThisYear--;

writeCalendar();

}

catch(e) {}

}

//往后翻 Year

function

nextY()

{

try

{

//WebCalendarThisDay = 1;

hidenYearSelect();

hidenMonthSelect();

WebCalendarThisYear++;

writeCalendar();

}

catch(e) {}

}

function

writeCalendar()

{

try

{

var y = WebCalendarThisYear;

var m = WebCalendarThisMonth;

var d = WebCalendarThisDay;

WebCalendarDaysMonth[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(

"对不起,你输入了错误的日期!");

WebCalendarThisYear =

new Date().getFullYear();

WebCalendarThisMonth =

new Date().getMonth() + 1;

WebCalendarThisDay =

new Date().getDate();

}

y = WebCalendarThisYear;

m = WebCalendarThisMonth;

d = WebCalendarThisDay;

popUp.document.all.kxYearHead.innerText = y +

" 年";

popUp.document.all.kxYearMonth.innerText = parseInt(m, 10) +

" 月";

//闰年二月为29天

WebCalendarDaysMonth[1] = (0==y%4 && (y%100!=0 || y%400==0)) ? 29 : 28;

var w = new Date(y, m-1, 1).getDay();

var prevDays = (m==1) ? WebCalendarDaysMonth[11] : WebCalendarDaysMonth[m-2];

//这三个 for 循环为日历赋数据源(数组 WebCalendarDay)格式是 d/m/yyyy

for(var i=(w-1); i>=0; i--)

{

WebCalendarDay[i] = prevDays +

"/" + (parseInt(m, 10)-1) + "/" + y;

if(m==1) WebCalendarDay[i] = prevDays +"/"+ 12 +"/"+ (parseInt(y, 10)-1);

prevDays--;

}

for(var i=1; i<=WebCalendarDaysMonth[m-1]; i++) WebCalendarDay[i+w-1] = i + "/" + m + "/" + y;

for(var i=1; i<42-w-WebCalendarDaysMonth[m-1]+1; i++)

{

WebCalendarDay[WebCalendarDaysMonth[m-1]+w-1+i] = i +

"/" + (parseInt(m, 10)+1) + "/" + y;

if(m==12) WebCalendarDay[WebCalendarDaysMonth[m-1]+w-1+i] = i +"/"+ 1 +"/"+ (parseInt(y, 10)+1);

}

//edit 2005-11-29 15:42

if (WebCalendarDaysMonth[m-1]<d)

{

d=WebCalendarDaysMonth[m-1];

WebCalendarThisDay=d;

}

WebCalendarNowSelect=d +

"/" + m + "/" + y;

//显示当前选择的时间

var tempArray=WebCalendarNowSelect.split("/");

popUp.document.all.nowSelectObj.innerHTML=tempArray[2]+

"-"+appendZero(tempArray[1])+"-"+appendZero(tempArray[0])+"";

//这个循环是根据源数组写到日历里显示

for(var i=0; i<42; i++){

var a = WebCalendarDay[i].split("/");

WebCalendarDayObj[i].className=

'out';

WebCalendarDayObj[i].innerText = a[0];

WebCalendarDayObj[i].title = a[2] +

"-"+ appendZero(a[1]) +"-"+ appendZero(a[0]);

WebCalendarDayObj[i].bgColor = WebCalendarDayBgColor;

WebCalendarDayObj[i].style.color = WebCalendarWordColor;

WebCalendarDayObj[i].style.removeAttribute(

'backgroundColor');

if ((i<10 && parseInt(WebCalendarDay[i], 10)>22) || (i>27 && parseInt(WebCalendarDay[i], 10)<14)){

WebCalendarDayObj[i].style.color = WebCalendarWordDark;

}

//设置输入框里的日期在日历上的颜色

if (WebCalendarInputDate==WebCalendarDay[i]){

WebCalendarDayObj[i].bgColor = WebCalendarDarkColor;

WebCalendarDayObj[i].style.color = WebCalendarLightColor;

}

//设置今天在日历上反应出来的颜色

if (WebCalendarDay[i] == WebCalendarToday)

{

WebCalendarDayObj[i].bgColor = WebCalendarTodayColor; WebCalendarDayObj[i].style.color = WebCalendarLightColor;

}

if(WebCalendarDay[i] == WebCalendarNowSelect){

WebCalendarDayObj[i].className=

'selected';

WebCalendarDayObj[i].style.color=WebCalendarLightColor;

if(WebCalendarToday!=WebCalendarNowSelect){

WebCalendarDayObj[i].style.background = WebCalendarDarkColor;

}

}

}

if(WebCalendarTimeShow){

popUp.document.all.hou.value = appendZero(nowTimeTemp.getHours());

popUp.document.all.min.value = appendZero(nowTimeTemp.getMinutes());

popUp.document.all.sec.value = appendZero(nowTimeTemp.getSeconds());

}

}

catch(excp2){

}

}

//根据日期格式等返回用户选定的日期

function

newDateSelect()

{

if (needClickBtnOK)

{

if(WebCalendarObjExport)

{

var selectObj = (arguments.length==0) ? WebCalendarDay[this.id.substr(5)]: arguments[0];

var a = selectObj.split("/");

WebCalendarNowSelect = WebCalendarDay[

this.id.substr(5)];

if(a[2]>WebCalendarThisYear){

nextM();

}

else if(a[2]<WebCalendarThisYear){

prevM();

}

else if(a[1]>WebCalendarThisMonth){

nextM();

}

else if(a[1]<WebCalendarThisMonth){

prevM();

}

else{

writeCalendar();

}

}

}

else

{

if(WebCalendarObjExport)

{

WebCalendarNowSelect = WebCalendarDay[

this.id.substr(5)];

returnDate();

}

}

}

function

returnDate() {

if (WebCalendarObjExport) {

var returnValue;

var a = (arguments.length == 0) ? WebCalendarNowSelect.split("/"): arguments[0].split("/");

var d = WebCalendarFormat.match(/^(/w{4})(-|//)(/w{1,2})/2(/w{1,2})$/);

if (d == null) {

alert(

"你设定的日期输出格式不对!/r/n/r/n请重新定义 WebCalendarFormat !");

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 (WebCalendarTimeShow) {

var h = popUp.document.all.hou.value;

var m = popUp.document.all.min.value;

var s = popUp.document.all.sec.value;

nowTimeTemp.setHours(h);

nowTimeTemp.setMinutes(m);

nowTimeTemp.setSeconds(s);

returnValue += flag ?

" " + appendZero(h) + ":" + appendZero(m) + ":" + appendZero(s): " " + h + ":" + m + ":" + s;

}

//var tempValue = WebCalendarObjExport.value;

WebCalendarObjExport.value = returnValue;

hiddenCalendar();

/*if(tempValue != returnValue){

onchangeID.fire();

} */

}

}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值