📄 calendar.js
字号:
var t = target.offsetTop, h = target.clientHeight, l = target.offsetLeft, p = target.type;
var o = WebCalendar.calendar.style;
while (target = target.offsetParent)
{t += target.offsetTop; l += target.offsetLeft;}
var cw = parseInt(o.width), ch = parseInt(o.height);
var dw = document.body.clientWidth, dl = document.body.scrollLeft, dt = document.body.scrollTop, dh = document.body.clientHeight;
if (dh + 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;
}
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++) e.options.add(new Option(i, i));// +"年"
e.style.display = ""; e.value = y; e.focus();
}
function funHourSelect() //小时的滚动按钮
{
if(WebCalendar.timeShow)
{
var h = isNaN(parseInt(WebCalendar.thisHour, 10)) ? new Date().getHours() : parseInt(WebCalendar.thisHour);
var e = WebCalendar.iframe.document.forms[0].tmpHourSelect;
e.style.display = ""; e.value = h; e.focus();
}
}
function funMinuteSelect() //分钟的滚动按钮
{
if(WebCalendar.timeShow)
{
var mi = isNaN(parseInt(WebCalendar.thisMinute, 10)) ? new Date().getMinutes() : parseInt(WebCalendar.thisMinute);
var e = WebCalendar.iframe.document.forms[0].tmpMinuteSelect;
e.style.display = ""; e.value = mi; e.focus();
}
}
function funSecondSelect() //秒的滚动按钮
{
if(WebCalendar.timeShow)
{
var s = isNaN(parseInt(WebCalendar.thisSecond, 10)) ? new Date().getSeconds : parseInt(WebCalendar.thisSecond);
var e = WebCalendar.iframe.document.forms[0].tmpSecondSelect;
e.style.display = ""; e.value = s; 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();
}
//往前翻 Year
function prevY()
{WebCalendar.thisDay = 1; WebCalendar.thisYear--; writeCalendar();}
//往后翻 Year
function nextY()
{WebCalendar.thisDay = 1; WebCalendar.thisYear++; writeCalendar();}
//隐藏下拉列表
function hiddenSelect(e)
{for(var i=e.options.length; i>-1; i--)e.options.remove(i); e.style.display="none";}
//隐藏微调按钮
function hiddenTextarea(e)
{e.style.display="none";}
//获取对象
function getObjectById(id)
{
if(document.all)
return(eval("document.all."+ id));
return(eval(id));
}
//隐藏日历
function hiddenCalendar()
{
getObjectById("eosCalendarLayer").style.display = "none";
WebCalendar.isOpen = false;
}
//日期自动补零程序
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;
this.style.cursor = "hand";
}
//鼠标移出某天时的事件
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;
var h = WebCalendar.thisHour;
var mi = WebCalendar.thisMinute;
var s = WebCalendar.thisSecond;
WebCalendar.daysMonth[1] = (0==y%4 && (y%100!=0 || y%400==0)) ? 29 : 28;
if (!(parseInt(y, 10)<=9999 && parseInt(y, 10) >= 1000 && parseInt(m, 10)>=0 && parseInt(m, 10)<=12 && parseInt(d, 10)>=0
&& parseInt(h, 10)<=23 && parseInt(h, 10)>=0 && parseInt(mi, 10)<=59 && parseInt(mi, 10)>=0
&& parseInt(s, 10)<=59 && parseInt(s, 10)>=0))
{
//alert("对不起,你输入了错误的日期!");
WebCalendar.thisYear = new Date().getFullYear();
WebCalendar.thisMonth = new Date().getMonth()+ 1;
WebCalendar.thisDay = new Date().getDate();
WebCalendar.thisHour = new Date().getHours();
WebCalendar.thisMinute = new Date().getMinutes();
WebCalendar.thisSecond = new Date().getSeconds();
}
WebCalendar.iframe.meizzYearHead.innerText = y;
WebCalendar.iframe.meizzYearMonth.innerText = m;
if(WebCalendar.timeShow)
{
WebCalendar.iframe.hourTD.innerText = h +" 时";
WebCalendar.iframe.hourTD.title = '点击此处选择时';
WebCalendar.iframe.hourTD.onclick = funHourSelect;
WebCalendar.iframe.minuteTD.innerText = mi +" 分";
WebCalendar.iframe.minuteTD.title='点击此处选择分';
WebCalendar.iframe.minuteTD.onclick = funMinuteSelect;
WebCalendar.iframe.secondTD.innerText = s +" 秒";
WebCalendar.iframe.secondTD.title='点击此处选择秒';
WebCalendar.iframe.secondTD.onclick = funSecondSelect;
}
WebCalendar.daysMonth[1] = (0==y%4 && (y%100!=0 || y%400==0)) ? 29 : 28; //闰年二月为29天
var w = new Date(y, m-1, 1).getDay(); //星期值0-6 -> 周日-周一
var prevDays = m==1 ? WebCalendar.daysMonth[11] : WebCalendar.daysMonth[m-2]; //当前月上一个月天数
//这三个 for 循环为日历赋数据源(数组 WebCalendar.day)格式是 d/m/yyyy
for(var i=(w-1); i>=0; i--) //补齐上个月日期
{
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<42-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<42; 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.inputColor;
WebCalendar.dayObj[i].style.color = WebCalendar.wordColor;
WebCalendar.dayObj[i].style.fontWeight = "bold";
}
if (WebCalendar.day[i] == WebCalendar.today) //设置今天在日历上反映出来的颜色
{
WebCalendar.dayObj[i].bgColor = WebCalendar.todayColor;
WebCalendar.dayObj[i].style.color = WebCalendar.wordColor;
WebCalendar.dayObj[i].style.fontWeight = "bold";
}
}
}
/*
* 根据日期格式等返回用户选定的日期
* 目前支持:yyyyMMdd,yyyy/MM/dd,yyyy-MM-dd,yyyy年MM月dd日
* yyyyMMddHHmmss,yyyy/MM/dd HH:mm:ss,yyyy-MM-dd HH:mm:ss,yyyy年MM月dd日HH时mm分ss秒
*/
function returnDate()
{
if(WebCalendar.objExport)
{
var returnValue;
var a = WebCalendar.day[this.id.substr(8)].split("/");
if(WebCalendar.format == "yyyyMMdd" || WebCalendar.format == "yyyyMMddHHmmss")
//eos标准格式
{
returnValue = a[2] + appendZero(a[1]) + appendZero(a[0]);
if(WebCalendar.timeShow == true)
{
var h = WebCalendar.thisHour, m = WebCalendar.thisMinute, s = WebCalendar.thisSecond;
returnValue += appendZero(h) + appendZero(m) + appendZero(s);
}
}
else if(/^(y{4})(-|\/)(M{1,2})\2(d{1,2})$/.test(WebCalendar.format) ||
/^(y{4})(-|\/)(M{1,2})(-|\/)(d{1,2}) HH:mm:ss$/.test(WebCalendar.format))
//"-","/"间隔格式
{
var d;
if(/^(y{4})(-|\/)(M{1,2})\2(d{1,2})$/.test(WebCalendar.format))
d = WebCalendar.format.match(/^(\w{4})(-|\/)(\w{1,2})\2(\w{1,2})$/);
else
d = WebCalendar.format.match(/^(\w{4})(-|\/)(\w{1,2})\2(\w{1,2}) HH:mm:ss$/);
if(d==null)
{
alert("你设定的日期输出格式不对!\r\n\r\n请重新定义 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 == true)
{
var h = WebCalendar.thisHour, m = WebCalendar.thisMinute, s = WebCalendar.thisSecond;
returnValue += flag ? " "+ appendZero(h) +":"+ appendZero(m) +":"+ appendZero(s) : " "+ h +":"+ m +":"+ s;
}
}
else if(/^(y{4})(年)(M{1,2})(月)(d{1,2})(日)$/.test(WebCalendar.format) ||
/^(y{4})(年)(M{1,2})(月)(d{1,2})(日)(HH时mm分ss秒)$/.test(WebCalendar.format))
//中文格式
{
var d;
if(/^(y{4})(年)(M{1,2})(月)(d{1,2})(日)$/.test(WebCalendar.format))
d = WebCalendar.format.match(/^(y{4})(年)(M{1,2})(月)(d{1,2})(日)$/);
else
d = WebCalendar.format.match(/^(y{4})(年)(M{1,2})(月)(d{1,2})(日)(HH时mm分ss秒)$/);
if(d==null)
{
alert("你设定的日期输出格式不对!\r\n\r\n请重新定义 WebCalendar.format !");
return false;
}
var flag = d[3].length==2 || d[5].length==2; //判断返回的日期格式是否要补零
returnValue = flag ? a[2] + "年" + appendZero(a[1]) + "月" + appendZero(a[0]) + "日" : a[2] + "年" + a[1] + "月" + a[0] + "日";
if(WebCalendar.timeShow == true)
{
var h = WebCalendar.thisHour, m = WebCalendar.thisMinute, s = WebCalendar.thisSecond;
returnValue += flag ? appendZero(h) +"时"+ appendZero(m) + "分" + appendZero(s) + "秒" : h +"时"+ m + "分" + s + "秒";
}
}
else
//默认的返回格式
{
if(/^(y{4})(-)(M{1,2})\2(d{1,2}) HH:mm:ss$/.test(WebCalendar.format))
{
var h = WebCalendar.thisHour, m = WebCalendar.thisMinute, s = WebCalendar.thisSecond;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -