Cvermule

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Thursday, 10 February 2005

Date Validation with JavaScript

Posted on 08:12 by Unknown
This is a small bit of html to show you how you can use JavaScript to validate dates. This is also leap year compliant.







<html>

<head>

<script type="text/javascript">

function isValidDate(dateStr)

{

if (dateStr == "MM/DD/YYYY")

{

return false;

}



// dateStr must be of format month day year with either slashes

// or dashes separating the parts. Some minor changes would have

// to be made to use day month year or another format.

// This function returns True if the date is valid.

var slash1 = dateStr.indexOf("/");



if (slash1 == -1)

{

slash1 = dateStr.indexOf("-");

}



// if no slashes or dashes, invalid date

if (slash1 == -1)

{

return false;

}



var dateMonth = dateStr.substring(0, slash1)

var dateMonthAndYear = dateStr.substring(slash1+1, dateStr.length);

var slash2 = dateMonthAndYear.indexOf("/");



if (slash2 == -1)

{

slash2 = dateMonthAndYear.indexOf("-");

}



// if not a second slash or dash, invalid date

if (slash2 == -1)

{

return false;

}



var dateDay = dateMonthAndYear.substring(0, slash2);

var dateYear = dateMonthAndYear.substring(slash2+1, dateMonthAndYear.length);



if ( (dateMonth == "") (dateDay == "") (dateYear == "") )

{

return false;

}



// if any non-digits in the month, invalid date

for (var x=0; x < dateMonth.length; x++)

{

var digit = dateMonth.substring(x, x+1);



if ((digit < "0") (digit > "9"))

{

return false;

}

}



// convert the text month to a number

var numMonth = 0;



for (var x=0; x < dateMonth.length; x++)

{

digit = dateMonth.substring(x, x+1);

numMonth *= 10;

numMonth += parseInt(digit);

}



if ((numMonth <= 0) (numMonth > 12))

{

return false;

}



// if any non-digits in the day, invalid date

for (var x=0; x < dateDay.length; x++)

{

digit = dateDay.substring(x, x+1);

if ((digit < "0") (digit > "9"))

{

return false;

}

}



// convert the text day to a number

var numDay = 0;



for (var x=0; x < dateDay.length; x++)

{

digit = dateDay.substring(x, x+1);

numDay *= 10;

numDay += parseInt(digit);

}



if ((numDay <= 0) (numDay > 31))

{

return false;

}



// February can't be greater than 29 (leap year calculation comes later)

if ((numMonth == 2) && (numDay > 29)) { return false; }



// check for months with only 30 days

if ((numMonth == 4) (numMonth == 6) (numMonth == 9) (numMonth == 11))

{

if (numDay > 30)

{

return false;

}

}



// if any non-digits in the year, invalid date

for (var x=0; x < dateYear.length; x++)

{

digit = dateYear.substring(x, x+1);



if ((digit < "0") (digit > "9"))

{

return false;

}

}



// convert the text year to a number

var numYear = 0;



for (var x=0; x < dateYear.length; x++)

{

digit = dateYear.substring(x, x+1);

numYear *= 10;

numYear += parseInt(digit);

}



// Year must be a 2-digit year or a 4-digit year

if ( dateYear.length != 4 )

{

return false;

}



// check for leap year if the month and day is Feb 29

if ((numMonth == 2) && (numDay == 29))

{

var div4 = numYear % 4;

var div100 = numYear % 100;

var div400 = numYear % 400;



// if not divisible by 4, then not a leap year so Feb 29 is invalid

if (div4 != 0)

{

return false;

}



// at this point, year is divisible by 4. So if year is divisible by

// 100 and not 400, then its not a leap year so Feb 29 is invalid

if ((div100 == 0) && (div400 != 0))

{

return false;

}

}



// date is valid

return true;

}

</script>

</head>



<body>

<form name="aForm" id="aForm">

<input type="text" name="aDate" id="aDate" value="MM/DD/YYYY"/>

<input type="button" value="Check Date" onclick="alert(isValidDate(document.aForm.aDate.value));"/>

</form>

</body>

</html>

Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Posted in | No comments
Newer Post Older Post Home

0 comments:

Post a Comment

Subscribe to: Post Comments (Atom)

Popular Posts

  • Musicovery
    I found this site courtesy of http://www.i-am-bored.com . The name of the site is Musicovery . This is a site where you can listen to musi...
  • EL OR LA COMPUTER
    A Spanish teacher was explaining to her class that in Spanish, unlike English, nouns are designated as either masculine or feminine. "H...
  • Oracle Tuning
    For most efficient access, the order that tables are specified can make a difference. The optimiser will re-order table access based on the ...
  • Eclipse can detect null pointer reference
    Eclipse has the ability to detect null pointer reference but it's not enable by default. To do so, go to the preferences. In the Java...
  • Can you use JavaScript to read and write to a file?
    Now I was searching high and low for the answer to this question. The big answer that I got was, JavaScript cannot read or write to files. H...
  • Capturing the close event.
    When programming a thin-client application using HTML and JavaScript and you want to capture the closing event, it is not as easy as one thi...
  • Introducing...
  • SQL index tip
    This where clause can be made more simple and avoid unnecessary formatting by Oracle if you use the default Oracle format for the date test....
  • Security Warning on MSDN
    I got this warning when trying to go to MSDN from a search. How comical is this!?
  • My approach to drop down menus using JavaScript
    Drop down menu <div> <iframe></iframe> <div></div> </div> Hide outer div by setting the Style.Visibility...

Categories

  • amazon
  • browser specific
  • coding
  • Eclipse
  • error
  • example
  • funny
  • google
  • grep
  • hacks
  • javascript
  • jott
  • music
  • null
  • phone
  • search
  • search engine
  • tip
  • tool
  • unix
  • web development
  • yui

Blog Archive

  • ►  2008 (5)
    • ►  September (1)
    • ►  August (1)
    • ►  July (1)
    • ►  June (1)
    • ►  January (1)
  • ►  2007 (6)
    • ►  December (1)
    • ►  September (1)
    • ►  July (1)
    • ►  June (1)
    • ►  March (2)
  • ►  2006 (10)
    • ►  November (1)
    • ►  August (1)
    • ►  May (2)
    • ►  April (4)
    • ►  March (2)
  • ▼  2005 (10)
    • ►  August (3)
    • ►  June (2)
    • ▼  February (5)
      • Limiting Characters entered in an html text field ...
      • Limiting Characters entered in an html text field ...
      • Accessing an Access Db using JavaScript
      • Date Validation with JavaScript
      • A lazy Day.
  • ►  2004 (9)
    • ►  October (2)
    • ►  September (7)
Powered by Blogger.

About Me

Unknown
View my complete profile