JavaScript 日期选择器






4.30/5 (21投票s)
2005年10月13日

260207

3089
日期选择器是一个用于 ASP.NET 应用程序客户端的控件。
引言
以下是 JavaScript 中 DatePicker
的示例代码。它可以在 HTML 页面上使用,也可以作为 ASP 控件使用 - 就像我使用它一样(请参阅演示文件)。
以下是 JS 代码的片段(“render
”函数的一部分)
DatePicker.prototype.render = function()
{
var oT1, oTR1, oTD1, oTH1;
var oT2, oTR2, oTD2;
this.oSpan = document.getElementById(this.name);
this.oSpan.appendChild(oT1 = document.createElement("table"));
oT1.width = "200";
oT1.border = 1;
oTR1 = oT1.insertRow(oT1.rows.length);
oTD1 = oTR1.insertCell(oTR1.cells.length);
oTD1.colSpan = 7;
oTD1.className = 'DatePickerHdr';
oT2 = document.createElement("table");
oT2.width = "100%";
oTD1.appendChild(oT2);
oT2.border = 0;
// New row.
oTR2 = oT2.insertRow(oT2.rows.length);
// Previous month.
oTD2 = oTR2.insertCell(oTR2.cells.length);
oTD2.title = this.texts.prevMonth;
oTD2.onclick = function() { this.oDatePicker.onPrev(); }
oTD2.oDatePicker = this;
oTD2.innerHTML = "<img src="images/datepicker/prev.gif">";
oTD2.className = 'DatePickerHdrBtn';
// Month combo.
oTD2 = oTR2.insertCell(oTR2.cells.length);
oTD2.title = this.texts.monthTitle;
this.oMonth = document.createElement("select");
oTD2.appendChild(this.oMonth);
this.oMonth.oDatePicker = this;
this.oMonth.onchange = this.oMonth.onkeyup =
function() { this.oDatePicker.onMonth(); }
for(var i = 0; i < 12; i++)
{
this.oMonth.add(new Option(this.texts.months[i], i),undefined);
}
this.oMonth.className = 'DatePickerHdrBtn';
// Year combo.
oTD2 = oTR2.insertCell(oTR2.cells.length);
oTD2.title = this.texts.yearTitle;
this.oYear = document.createElement("select");
oTD2.appendChild(this.oYear);
this.oYear.oDatePicker = this;
this.oYear.onchange = this.oYear.onkeyup =
function() { this.oDatePicker.onYear(); }
我使用了俄语和俄语日期格式,因为该选择器的需求是针对一个俄语网站。但是,选择器使用的语言和格式可以很容易地更改 - 只需更改数组值和“fill
”方法即可。
DatePicker.prototype.fill = function()
{
// first clear all
this.clear();
// place the dates in the calendar
var nRow = 0;
var d = new Date(this.dt.getTime());
var m = d.getMonth();
for ( d.setDate(1); d.getMonth() == m;
d.setTime(d.getTime() + 86400000) ) {
var nCol = d.getDay();
if(nCol == 0) nCol = 7;
nCol = nCol-1;
this.aCells[nRow][nCol].innerHTML = d.getDate();
if ( d.getDate() == this.dt.getDate() ) {
this.aCells[nRow][nCol].className =
'DatePickerBtnSelect';
}
if ( nCol == 6 ) nRow++;
}
// set the month combo
this.oMonth.value = m;
// set the year text
this.oYear.value = this.dt.getFullYear();
}
就这样了。我真的认为这个控件非常有用。