📄 datepicker.js
字号:
var docHTML ;
var dateField ;
var arrayDays ;
var arrayMonth ;
var posX, posY;
var layerIDGlobal ;
var hasMoved;
var callOnClose = "";
window.onload = initCalendar ;
function initCalendar() {
if (document.captureEvents) document.captureEvents(Event.MOUSEUP) ;
document.onmouseup = initCalendarCoordinates ;
hasMoved = false;
}
function initCalendarCoordinates (e) {
// IE4
if (document.all) {
posX = event.clientX ;
posY = event.clientY ;
}
else {
// Netscape und W3C compatible
posX = parseInt(e.pageX+10) ;
posY = parseInt(e.pageY) ;
}
if (document.releaseEvents) document.releaseEvents(Event.MOUSEMOVE);
document.onmousemove = null;
}
function startDragging() {
if (document.captureEvents) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = moveCalendar;
}
function moveCalendar(e) {
if (document.getElementById) {
// W3C compatible
if (! e) {
posX = event.x;
posY = event.y;
} else {
posX = e.pageX;
posY = e.pageY;
}
document.getElementById(layerIDGlobal).style.left = parseInt(posX) - 10;
document.getElementById(layerIDGlobal).style.top = parseInt(posY) - 10;
hasMoved = true;
}
}
function showCalendar2(layerID, sField, nYear, nMonth) {
showCalendar(layerID, sField);
if (nYear != "" && nMonth != "") {
changeCalendar(nYear, nMonth-1);
}
}
function showCalendar(layerID, sField) {
// Der Kalender wird aktiviert oder deaktiviert
if (document.getElementById) {
// W3C compatible
var layer = document.getElementById(layerID);
// if (layer.captureEvents) layer.captureEvents(Event.MOUSEDOWN) ;
// layer.onmousedown = startDragging;
}
layerIDGlobal = layerID ;
dateField = sField ;
if (document.getElementById) {
// W3C compatible
if (document.getElementById(layerID).style.visibility == "visible") document.getElementById(layerID).style.visibility = "hidden" ;
else {
document.getElementById(layerID).style.visibility = "visible" ;
if(! hasMoved) {
document.getElementById(layerID).style.left = parseInt(posX) + 20 ;
document.getElementById(layerID).style.top = parseInt(posY) + 10;
}
}
}
else if (document.layers) {
// Netscape compatible
if (document.layers[layerID].visibility == "visible" | document.layers[layerID].visibility == "show") document.layers[layerID].visibility = "hide" ;
else {
document.layers[layerID].visibility = "show" ;
document.layers[layerID].left = posX ;
document.layers[layerID].top = posY ;
}
}
else if (document.all) {
// IE4 und IE5 compatible
if (document.all[layerID].style.visibility == "visible") document.all[layerID].style.visibility = "hidden" ;
else {
document.all[layerID].style.visibility = "visible" ;
document.all[layerID].style.left = parseInt(posX)+10 ;
document.all[layerID].style.top = parseInt(posY) ;
}
}
}
function closeCalendar() {
showCalendar(layerIDGlobal, "");
}
function drawCalendar(cYear, cMonth) {
// Der Kalender wird gezeichnet
var currentDate = new Date() ;
var year = currentDate.getFullYear();
var month = currentDate.getMonth();
var day = currentDate.getDate();
var myMonth = buildCalendar(cYear, cMonth)
var showMonth = arrayMonth[parseInt(cMonth)] ;
docHTML = "<table class='dateTable' cellspacing='0' cellpadding='0'>" ;
docHTML = docHTML + "<tr>";
docHTML = docHTML + "<td class=dateHead colspan=6 align=centre>Select Date</td>" ;
docHTML = docHTML + "<td class=dateHeadsub><a href='#' onclick='closeCalendar() ; return false ; '><b>X</b></a></td>" ;
docHTML = docHTML + "</tr>" ;
docHTML = docHTML + "<tr>" ;
docHTML = docHTML + "<td class=cellTable><a class=arrowTable href='#' onclick='changeCalendar(" + parseInt(cYear-1) + ", " + parseInt(cMonth) + ") ; return false ; '><<</a></td>" ;
docHTML = docHTML + "<td class=cellTable><a class=arrowTable href='#' onclick='changeCalendar(" + (cMonth==0 ? parseInt(cYear-1) : parseInt(cYear)) + ", " + (cMonth==0 ? 11 : parseInt(cMonth-1)) + ") ; return false ; '><</a></td>" ;
docHTML = docHTML + "<td colspan=3 align=center><font class=headingText>" + showMonth + " " + cYear + "</font></td>" ;
docHTML = docHTML + "<td class=cellTable><a class=arrowTable href='#' onclick='changeCalendar(" + (cMonth==11 ? parseInt(cYear+1) : parseInt(cYear)) + ", " + (cMonth==11 ? 0 : parseInt(cMonth+1)) + ") ; return false ; '>></a></td>" ;
docHTML = docHTML + "<td class=cellTable><a class=arrowTable href='#' onclick='changeCalendar(" + parseInt(cYear+1) + ", " + parseInt(cMonth) + ") ; return false ; '>>></a></td>" ;
docHTML = docHTML + "</tr>" ;
docHTML = docHTML + "<tr>" ;
for (w=0; w<7; w++) {
docHTML = docHTML + "<td class=headingDays>" + myMonth[0][w] + "</td>" ;
}
docHTML = docHTML + "</tr>" ;
var css="";
for (w=1; w<7; w++) {
docHTML = docHTML + "<tr>" ;
for (d=0; d<7; d++) {
docHTML = docHTML + "<td class=cellTable>" ;
if ( !isNaN(myMonth[w][d]) ) {
if (day==myMonth[w][d] && month==parseInt(cMonth)) {css=" id='today'";}
docHTML = docHTML + "<a class='bodyDays'" + css + " href='#' onclick='clickCalendar(" + myMonth[w][d] + ", " + parseInt(cMonth+1) + ", " + cYear + ") ; return false ; '>" + myMonth[w][d] + "</a>" ;
css = "bodyDays";
}
else docHTML = docHTML + "<font class=bodyDays> </font>" ;
docHTML = docHTML + "</td>" ;
}
docHTML = docHTML + "</tr>" ;
}
docHTML = docHTML + "</table>" ;
return docHTML;
}
function buildCalendar(aYear, aMonth) {
// Diese Funktion bestimmt eine Monats-Matrix
var tMonth = new Array() ;
var tDate1 = new Date(aYear, aMonth, 1) ;
var tDate28 = new Date(aYear, aMonth, 28) ;
var tDate29 = new Date(aYear, aMonth, 29) ;
var tDate30 = new Date(aYear, aMonth, 30) ;
var tDate31 = new Date(aYear, aMonth, 31) ;
var tFirstDay = tDate1.getDay() ;
var tDays = 0 ;
if ( tDate31.getMonth() == tDate1.getMonth() ) tDays = tDate31.getDate() ;
else if ( tDate30.getMonth() == tDate1.getMonth() ) tDays = tDate30.getDate() ;
else if ( tDate29.getMonth() == tDate1.getMonth() ) tDays = tDate29.getDate() ;
else if ( tDate28.getMonth() == tDate1.getMonth() ) tDays = tDate28.getDate() ;
var tVar = 1 ;
tMonth[0] = arrayDays ;
tMonth[1] = new Array(7) ;
tMonth[2] = new Array(7) ;
tMonth[3] = new Array(7) ;
tMonth[4] = new Array(7) ;
tMonth[5] = new Array(7) ;
tMonth[6] = new Array(7) ;
if (tFirstDay == 0) {
tMonth[1][6] = tVar ;
tVar++ ;
}
else {
for (d=tFirstDay-1; d<7; d++) {
tMonth[1][d] = tVar ;
tVar++ ;
}
}
for (w=2; w<7; w++) {
for (d=0; d<7; d++) {
if (tVar <= tDays) {
tMonth[w][d] = tVar ;
tVar++ ;
}
}
}
return tMonth ;
}
function clickCalendar(sDay, sMonth, sYear) {
// Ein bestimmtes Datum wird ausgew\u00E4hlt
if (sDay < 10) sDay = "0" + sDay ;
if (sMonth < 10) sMonth = "0" + sMonth ;
document.forms[1].elements[dateField].value = sDay + "/" + sMonth + "/" + sYear
/* document.forms[1].elements[dateField].value = sYear + "-" + sMonth + "-" + sDay ;;
document.forms[1].elements[dateField].value = sDay + " " + arrayMonth[parseInt(sMonth-1)] + " " + sYear*/
/* THIS IS WHERE IT IS CHANGED TO USE THE THREE FIELDS WE ALREADY HAVE
var dayField = dateField + '_d';
var monthField = dateField+'_m'
var yearField = dateField+'_y'
document.forms[1].elements[dayField].value = sDay;
document.forms[1].elements[monthField].value = sMonth;
document.forms[1].elements[yearField].value = sYear;
*/
showCalendar(layerIDGlobal, "") ;
if ( callOnClose != "") {
eval(callOnClose);
}
}
function changeCalendar(nYear, nMonth) {
// Monat oder Jahr des Kalenders werden ge\u00E4ndert
if (document.getElementById) {
// W3C compatible
drawCalendar(nYear, nMonth) ;
document.getElementById(layerIDGlobal).innerHTML = docHTML ;
}
else if (document.layers) {
// Netscape compatible
document.layers["DatePicker"].document.open() ;
drawCalendar(nYear, nMonth) ;
document.write("<div class='layerBackground'>")
document.write(docHTML) ;
document.write("</div>")
document.layers["DatePicker"].document.close() ;
}
else if (document.all) {
// IE4 und IE5 compatible
drawCalendar(nYear, nMonth) ;
document.all["DatePicker"].innerHTML = docHTML ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -