Click here to Skip to main content
11,641,971 members (62,811 online)
Click here to Skip to main content

JavaScript DatePicker

, 24 Feb 2006 217.2K 2.9K 71
Rate this:
Please Sign up or sign in to vote.
The DatePicker is a control for use on the client side of ASP.NET applications.

Sample Image - datepicker.gif

Introduction

Here is the sample code for a DatePicker in JavaScript. It can be used on HTML pages or as an ASP control - like I use it (see demo files).

Here is the code snippet of the JS code (part of the "render" function):

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(); }

I did use Russian language and Russian date format because the need of the picker was for a Russian site. But the language and format the picker uses can be changed very simply - just change the array values and the "fill" method:

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();
}

That is all. I do really think the control is very useful.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Nikita D. Sinelnikoff
Web Developer
Russian Federation Russian Federation
No Biography provided

You may also be interested in...

Comments and Discussions

 
Generalnice +5 Pin
Rajesh Biswas20-Jul-12 1:46
memberRajesh Biswas20-Jul-12 1:46 
GeneralMy vote of 4 Pin
skmm29-Jul-10 8:47
memberskmm29-Jul-10 8:47 
GeneralMy vote of 3 Pin
ramanarayananAsp8-Jul-10 6:35
memberramanarayananAsp8-Jul-10 6:35 
GeneralTwo Coordinated Dates Pin
krishna1122-Apr-08 19:55
memberkrishna1122-Apr-08 19:55 
Hi all
I have created a Two Coordinated Dates datapicker and some condiation follow under mention:
You cannot choose days prior to today.
You cannot choose a check-out date prior to the check-in date.
Clicking the Reset button clears the dates.
The default date in the Check-out calendar is the date chosen in the Check-in calendar. This is useful when the Check-in date is several months in the future, so the user doesn't need to scroll twice.
GeneralEncapsulate this Class inside a Custom Control is done Pin
Stephan Pilz22-Sep-06 3:54
memberStephan Pilz22-Sep-06 3:54 
Questionabout date control Pin
disak22-Sep-06 19:14
memberdisak22-Sep-06 19:14 
AnswerRe: about date control Pin
Stephan Pilz24-Sep-06 20:15
memberStephan Pilz24-Sep-06 20:15 
GeneralRe: about date control Pin
disak24-Sep-06 21:32
memberdisak24-Sep-06 21:32 
GeneralRe: about date control Pin
Stephan Pilz24-Sep-06 23:03
memberStephan Pilz24-Sep-06 23:03 
GeneralRe: Encapsulate this Class inside a Custom Control is done Pin
shrirampophali29-Oct-07 21:19
membershrirampophali29-Oct-07 21:19 
GeneralRe: Encapsulate this Class inside a Custom Control is done Pin
shrirampophali29-Oct-07 21:20
membershrirampophali29-Oct-07 21:20 
Questionabout javascript Pin
disak22-Sep-06 1:14
memberdisak22-Sep-06 1:14 
GeneralSomebody is ripping you off Pin
WorkDoggy29-Aug-06 3:16
memberWorkDoggy29-Aug-06 3:16 
AnswerRe: Somebody is ripping you off Pin
Stephan Pilz7-Sep-06 3:59
memberStephan Pilz7-Sep-06 3:59 
GeneralRe: Somebody is ripping you off Pin
Guyon A. Roche7-Sep-06 10:41
memberGuyon A. Roche7-Sep-06 10:41 
AnswerRe: Somebody is ripping you off Pin
WorkDoggy8-Sep-06 1:10
memberWorkDoggy8-Sep-06 1:10 
GeneralRe: Somebody is ripping you off Pin
Guyon A. Roche8-Sep-06 10:53
memberGuyon A. Roche8-Sep-06 10:53 
GeneralRe: Somebody is ripping you off Pin
Stephan Pilz8-Sep-06 3:47
memberStephan Pilz8-Sep-06 3:47 
NewsThe coolest date-time picker is here Pin
kan_izh27-Feb-06 22:20
memberkan_izh27-Feb-06 22:20 
GeneralRe: The coolest date-time picker Pin
disak22-Sep-06 1:32
memberdisak22-Sep-06 1:32 
GeneralProvide us please with the proper encoding Pin
JailorSubRuberoid21-Feb-06 2:36
memberJailorSubRuberoid21-Feb-06 2:36 
AnswerRe: Provide us please with the proper encoding Pin
Nikita D. Sinelnikoff24-Feb-06 1:22
memberNikita D. Sinelnikoff24-Feb-06 1:22 
GeneralA Bugfix and some little extensions in Code Pin
Stephan Pilz20-Dec-05 20:33
memberStephan Pilz20-Dec-05 20:33 
GeneralRe: A Bugfix and some little extensions in Code Pin
Guyon A. Roche8-Sep-06 11:16
memberGuyon A. Roche8-Sep-06 11:16 
GeneralRe: A Bugfix and some little extensions in Code Pin
Stephan Pilz22-Sep-06 3:52
memberStephan Pilz22-Sep-06 3:52 
QuestionBase class? Pin
iammudman31-Oct-05 7:26
memberiammudman31-Oct-05 7:26 
AnswerRe: Base class? Pin
KamelJabber13-Mar-06 6:03
memberKamelJabber13-Mar-06 6:03 
Generalsome question! Pin
gyokusei16-Oct-05 0:38
membergyokusei16-Oct-05 0:38 
AnswerRe: some question! Pin
Nikita D. Sinelnikoff17-Oct-05 3:18
memberNikita D. Sinelnikoff17-Oct-05 3:18 
GeneralRe: some question! Pin
gyokusei18-Oct-05 19:30
membergyokusei18-Oct-05 19:30 
GeneralRe: some question! Pin
disak22-Sep-06 1:24
memberdisak22-Sep-06 1:24 
GeneralHTML version Pin
Steven A Bristol13-Oct-05 6:48
memberSteven A Bristol13-Oct-05 6:48 
GeneralRe: HTML version Pin
jsanjosem17-Oct-05 20:45
memberjsanjosem17-Oct-05 20:45 
GeneralRe: HTML version Pin
Steven A Bristol18-Oct-05 2:50
memberSteven A Bristol18-Oct-05 2:50 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.150731.1 | Last Updated 24 Feb 2006
Article Copyright 2005 by Nikita D. Sinelnikoff
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid