📄 calendar.js
字号:
s["y"] = y; s["yy"] = new String(y).substr(2, 2); s["w"] = wn; s["ww"] = (wn < 10) ? ("0" + wn) : wn; with (Calendar) { s["D"] = _DN3[w]; s["DD"] = _DN[w]; s["M"] = _MN3[m]; s["MM"] = _MN[m]; } var re = /(.*)(\W|^)(d|dd|m|mm|y|yy|MM|M|DD|D|w|ww)(\W|$)(.*)/; while (re.exec(str) != null) { str = RegExp.$1 + RegExp.$2 + s[RegExp.$3] + RegExp.$4 + RegExp.$5; } return str;};// END: DATE OBJECT PATCHES// global object that remembers the calendarwindow.calendar = null;//********calendar-1.jsvar oldLink = null;// code to change the active stylesheetfunction setActiveStyleSheet(link, title) { var i, a, main; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { a.disabled = true; if(a.getAttribute("title") == title) a.disabled = false; } } if (oldLink) oldLink.style.fontWeight = 'normal'; oldLink = link; link.style.fontWeight = 'bold'; return false;}// This function gets called when the end-user clicks on some date.function selected(cal, date) { cal.sel.value = date; // just update the date in the input field. gChangeDate(cal.sel,dateType); // if we add this call we close the calendar on single-click. // just to exemplify both cases, we are using this only for the 1st // and the 3rd field, while 2nd and 4th will still require double-click. if (cal.sel.id == "sel1" || cal.sel.id == "sel3") cal.callCloseHandler(); //close this Calendar form //cal.callCloseHandler();}// And this gets called when the end-user clicks on the _selected_ date,// or clicks on the "Close" button. It just hides the calendar without// destroying it.function closeHandler(cal) { cal.hide(); // hide the calendar}function showCalendar(id,strType) { dateType=strType; FirstOpenFlg=true if(strType=="0" || strType=="3" || strType=="5" || strType=="7" || strType=="10") ChinaDateFlg=false; else ChinaDateFlg=true; var strformat = 'y/mm/dd'; var el = document.getElementById(id.name); var dc_date = ''; var strTimeAry1; var strDate=el.value if(el.value.indexOf("/")<=0) { strDate=strDate.substring(0,strDate.length-4)+"/"+strDate.substring(strDate.length-4,strDate.length-2)+ "/"+strDate.substring(strDate.length-2,strDate.length); } if(el.value !=''){ strTimeAry1=strDate.split("/") if(strTimeAry1[1].length==1) strTimeAry1[1]="0"+strTimeAry1[1] if(strTimeAry1[2].length==1) strTimeAry1[2]="0"+strTimeAry1[2] dc_date=(parseInt(strTimeAry1[0],10)) + "/" + strTimeAry1[1] + "/" + strTimeAry1[2] } if (calendar != null) { // we already have some calendar created calendar.hide(); // so we hide it first. } else { // first-time call, create the calendar. var cal = new Calendar(false, null, selected, closeHandler); // uncomment the following line to hide the week numbers cal.weekNumbers = false; calendar = cal; // remember it in the global var cal.setRange(1900, 2070); // min/max year allowed. cal.create(); } calendar.setDateFormat(strformat); // set the specified date format calendar.parseDate(dc_date); // try to parse the text in field calendar.sel = el; // inform it what input field we use calendar.showAtElement(el); // show the calendar below it return false;}var MINUTE = 60 * 1000;var HOUR = 60 * MINUTE;var DAY = 24 * HOUR;var WEEK = 7 * DAY;function isDisabled(date) { var today = new Date(); return (Math.abs(date.getTime() - today.getTime()) / DAY) > 10;}function flatSelected(cal, date) { var el = document.getElementById("preview"); el.innerHTML = date;}function showFlatCalendar() { var parent = document.getElementById("display"); // construct a calendar giving only the "selected" handler. var cal = new Calendar(false, null, flatSelected); // hide week numbers cal.weekNumbers = false; // We want some dates to be disabled; see function isDisabled above cal.setDisabledHandler(isDisabled); cal.setDateFormat("DD, M d"); // this call must be the last as it might use data initialized above; if // we specify a parent, as opposite to the "showCalendar" function above, // then we create a flat calendar -- not popup. Hidden, though, but... cal.create(parent); // ... we can show it here. cal.show();}//***********calendar-en.js// ** I18NCalendar._DN = new Array("日", "一", "二", "三", "四", "五", "六", "日");Calendar._MN = new Array("一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月");// tooltipsCalendar._TT = {};Calendar._TT["TOGGLE"] = "Toggle first day of week";Calendar._TT["PREV_YEAR"] = "上一年 (hold for menu)";Calendar._TT["PREV_MONTH"] = "上一月 (hold for menu)";Calendar._TT["GO_TODAY"] = "Go Today";Calendar._TT["NEXT_MONTH"] = "下一月 (hold for menu)";Calendar._TT["NEXT_YEAR"] = "下一年 (hold for menu)";Calendar._TT["SEL_DATE"] = "Select date";Calendar._TT["DRAG_TO_MOVE"] = "Drag to move";Calendar._TT["PART_TODAY"] = " (today)";Calendar._TT["MON_FIRST"] = "Display Monday first";Calendar._TT["SUN_FIRST"] = "Display Sunday first";Calendar._TT["CLOSE"] = "关闭";Calendar._TT["TODAY"] = "今天";// date formatsCalendar._TT["DEF_DATE_FORMAT"] = "y-mm-dd";Calendar._TT["TT_DATE_FORMAT"] = "D, M d";Calendar._TT["WK"] = "wk";//============以下为日期格式转化和检测方法/*javaScript字符串去空格的方法,用正则方法处理**用法:var strA=strA.trim();*/String.prototype.trim=function(){ return this.replace(/(^\s*)|(\s*$)/g,'');}/******************************************************************************************' 函数名称 : IsCDate' 目 的 : 判断日期是否正确' 参数说明 : obj : 日期对象值' stype : 日期类型,0:非标准日期19970807,1:标准日期1997/8/7' CDate : 民国日期,0:公元日期, 1:民国日期'******************************************************************************************///判断日期function IsCDate(objV,sType,CDate){ var objV=objV.trim(); var sY; var sM; var sD; var str; if(sType==0)//非标准日期 { sY=objV.substring(0,objV.length-4); sM=objV.substring(objV.length-4,objV.length-2); sD=objV.substring(objV.length-2,objV.length); } if(sType==1)//标准日期 { var strTimeAry1=objV.split("/"); sY=strTimeAry1[0]; sM=strTimeAry1[1]; sD=strTimeAry1[2]; } if(CDate=1) sY=sY*1+1911; str=sY+"/"+sM+"/"+sD var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); if(r==null)return false; var d= new Date(r[1], r[3]-1, r[4]); return (d.getFullYear()==r[1] && (d.getMonth()+1)==r[3] && d.getDate()==r[4]); }/******************************************************************************************' 函数名称 : gChangeDate' 目 的 : 转换日期显示格式' 参数说明 : strDate : 日期' vintType : 转换的形式' 传 回 值 : strChangeDate : 转换后的日期' 副 作 用 : 无' 范 例 : gChangeDate(this,0)' 备 注 : 可接收日期格式 19970807,1997/8/7,85/8/7,850809,87-9-8' case 0 '1997/08/05'' case 1 '85/08/05'' case 2 '085/08/05'' case 3 '1997年08月05日' case 4 '86年08月05日' case 5 '1997年08月05日星期一' case 6 '86年08月05日星期一' case 7 '19970805' case 8 '860805' case 9 '0860805' case 10 '星期一' case 11 ' 860805' case 12 ' 86/08/05' case 13 ' 86/8/5' Else' strChangeDate = "没有指定输出形态"'******************************************************************************************/function gChangeDate(vobjName,vintType){ var strDay,strMonth,strYear,strCYear,strTimeAry var strDate,StandDate,strWeekName,datDate,intNum,strChangeDate var resStr=""; if(vintType=="0" || vintType=="3" || vintType=="5" || vintType=="7" || vintType=="10") ChinaDateFlg=false; else ChinaDateFlg=true; strDate=vobjName.value.trim(); if(strDate=="") return; //若为空值, 则不做 //转换日期为标准模式 "1997/5/6" //XXXX-XX-XX if (strDate.indexOf("-")!=0) { resStr=""; for(var i=0;i<strDate.length;i++) resStr=resStr +((strDate.substring(i,i+1)).replace('-','/')); strDate=resStr; } //XXXX.XX.XX if (strDate.indexOf(".")!=0) { resStr=""; for(var i=0;i<strDate.length;i++) resStr=resStr +((strDate.substring(i,i+1)).replace('.','/')); strDate=resStr; } //XXXXXXXX if (strDate.indexOf("/")<=0) strDate=strDate.substring(0,strDate.length-4)+"/"+strDate.substring(strDate.length-4,strDate.length-2)+ "/"+strDate.substring(strDate.length-2,strDate.length); //若输入日期为12/23/23 应该是不合理的情况 ->先转成西元年格式再做判断 var strTimeAry1=strDate.split("/"); if(strTimeAry1.length!=3) { alert("请输入日期,格式为:年月日") ; vobjName.value=""; vobjName.focus(); return; } if (strTimeAry1[0].length!=4) { strTimeAry1[0]=strTimeAry1[0]*1; strDate=strTimeAry1[0]+"/"+strTimeAry1[1]+"/"+strTimeAry1[2]; } //判断日期是否合法 if(!ChinaDateFlg) var idDate=IsCDate(strDate,1,0); else var idDate=IsCDate(strDate,1,1); if(!idDate) { alert("请输入日期, 格式为年月日") ; vobjName.value=""; vobjName.focus(); return; } strYear = strTimeAry1[0]; strCYear = strYear.toString(); strMonth = strTimeAry1[1]; strDay = strTimeAry1[2]; datDate = strYear + "/" + strMonth + "/" + strDay; //OK 现在有标准的日期格式 //找出星期几 if(!ChinaDateFlg) var dateNew= new Date(datDate) else var dateNew= new Date((strCYear*1+1911)+ "/" + strMonth + "/" + strDay) var strWeekName=""; switch (dateNew.getDay()) { case 0: strWeekName = "星期日"; break; case 1: strWeekName = "星期一"; break; case 2: strWeekName = "星期二"; break; case 3: strWeekName = "星期三"; break; case 4: strWeekName = "星期四"; break; case 5: strWeekName = "星期五"; break; case 6: strWeekName = "星期六"; break; } switch(vintType) { case 0 : //1997/08/05' if(strMonth.length==1) strMonth = "0" + strMonth; if(strDay.length==1) strDay = "0" + strDay; strChangeDate = strYear + "/" + strMonth + "/" + strDay; break; case 1 : //85/08/05' strChangeDate = strCYear + "/" + strMonth + "/" + strDay; break; case 2 : //085/08/05' if(strMonth.length==1) strMonth = "0" + strMonth; if(strDay.length==1) strDay = "0" + strDay; if(strCYear.length==2) strCYear = "0" + strCYear; strChangeDate = strCYear + "/" + strMonth + "/" + strDay; break; case 3 : //1997年08月05日 if(strMonth.length==1) strMonth = "0" + strMonth; if(strDay.length==1) strDay = "0" + strDay; strChangeDate = strYear + "年" + strMonth + "月" + strDay + "日"; break; case 4 : //86年08月05日 if(strMonth.length==1) strMonth = "0" + strMonth; if(strDay.length==1) strDay = "0" + strDay; strChangeDate = strCYear + "年" + strMonth + "月" + strDay + "日"; break; case 5 : //1997年08月05日星期一 if(strMonth.length==1) strMonth = "0" + strMonth; if(strDay.length==1) strDay = "0" + strDay; strChangeDate = strYear+"年" + strMonth + "月" + strDay + "日" + strWeekName; break; case 6 : //86年08月05日星期一 if(strMonth.length==1) strMonth = "0" + strMonth; if(strDay.length==1) strDay = "0" + strDay; strChangeDate = strCYear + "年" + strMonth + "月" + strDay + "日" + strWeekName; break; case 7 : //19970805 if(strMonth.length==1) strMonth = "0" + strMonth; if(strDay.length==1) strDay = "0" + strDay; strChangeDate = strYear + strMonth + strDay; break; case 8 : //860805 if(strMonth.length==1) strMonth = "0" + strMonth; if(strDay.length==1) strDay = "0" + strDay; strChangeDate = strCYear + strMonth + strDay; break; case 9: //0860805 if(strMonth.length==1) strMonth = "0" + strMonth; if(strDay.length==1) strDay = "0" + strDay; if(strCYear.length==2) strCYear = "0" + strCYear; strChangeDate = strCYear + strMonth + strDay; break; case 10 : //星期一 strChangeDate = strWeekName; break; case 11: // 860805 if(strMonth.length==1) strMonth = "0" + strMonth; if(strDay.length==1) strDay = "0" + strDay; if(strCYear.length==2) strCYear = " " + strCYear; strChangeDate = strCYear + strMonth + strDay; break; case 12 : // 86/08/05 if(strMonth.length==1) strMonth = "0" + strMonth; if(strDay.length==1) strDay = "0" + strDay; if(strCYear.length==2) strCYear = " " + strCYear; strChangeDate = strCYear + "/" + strMonth + "/" + strDay; break; case 13 : // 94/1/1 if(strCYear.length==2) strCYear = " " + strCYear; strMonth=strMonth*1 strDay=strDay*1 strCYear=strCYear*1 strChangeDate = strCYear + "/" + strMonth + "/"+ strDay ; break; default: strChangeDate =vobjName.value;// "没有指定输出形态"; break; } vobjName.value=strChangeDate ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -