Check
for valid date using JavaScript. below is the full code.
- <head id="Head1" runat="server">
- <title>Untitled Page</title>
- <script language="javascript" type="text/javascript">
- // Declaring valid date character, minimum year and maximum year
- var dtCh = "/";
- var minYear = 1900;
- var maxYear = 2100;
- function isInteger(s) {
- var i;
- for (i = 0; i < s.length; i++) {
- // Check that current character is number.
- var c = s.charAt(i);
- if (((c < "0") || (c > "9"))) return false;
- }
- // All characters are numbers.
- return true;
- }
- function stripCharsInBag(s, bag) {
- var i;
- var returnString = "";
- // Search through string's characters one by one.
- // If character is not in bag, append to returnString.
- for (i = 0; i < s.length; i++) {
- var c = s.charAt(i);
- if (bag.indexOf(c) == -1) returnString += c;
- }
- return returnString;
- }
- function daysInFebruary(year) {
- // February has 29 days in any year evenly divisible by four,
- // EXCEPT for centurial years which are not also divisible by 400.
- return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
- }
- function DaysArray(n) {
- for (var i = 1; i <= n; i++) {
- this[i] = 31
- if (i == 4 || i == 6 || i == 9 || i == 11) { this[i] = 30 }
- if (i == 2) { this[i] = 29 }
- }
- return this
- }
- function isDate(dtStr) {
- var daysInMonth = DaysArray(12)
- var pos1 = dtStr.indexOf(dtCh)
- var pos2 = dtStr.indexOf(dtCh, pos1 + 1)
- var strMonth = dtStr.substring(0, pos1)
- var strDay = dtStr.substring(pos1 + 1, pos2)
- var strYear = dtStr.substring(pos2 + 1)
- strYr = strYear
- if (strDay.charAt(0) == "0" && strDay.length > 1)
- strDaystrDay = strDay.substring(1)
- if (strMonth.charAt(0) == "0" && strMonth.length > 1)
- strMonthstrMonth = strMonth.substring(1)
- for (var i = 1; i <= 3; i++) {
- if (strYr.charAt(0) == "0" && strYr.length > 1)
- strYrstrYr = strYr.substring(1)
- }
- month = parseInt(strMonth)
- day = parseInt(strDay)
- year = parseInt(strYr)
- if (pos1 == -1 || pos2 == -1) {
- alert("The date format should be : mm/dd/yyyy")
- return false
- }
- if (strMonth.length < 1 || month < 1 || month > 12) {
- alert("Please enter a valid month")
- return false
- }
- if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
- alert("Please enter a valid day")
- return false
- }
- if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
- alert("Please enter a valid 4 digit year between " + minYear + " and " + maxYear)
- return false
- }
- if (dtStr.indexOf(dtCh, pos2 + 1) != -1 || isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
- alert("Please enter a valid date")
- return false
- }
- return true
- }
- function ValidateForm() {
- var dt;
- dt = document.getElementById('txtDate');
- if (isDate(dt.value) == false) {
- dt.focus()
- return false
- }
- return true
- }
- </script>
- </head>
- <body>
- <form id="form2" runat="server">
- <div>
- <asp:TextBox ID="txtDate" runat="server">
- </asp:TextBox>
- <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="ValidateForm()" />
- </div>
- </form>
- </body>

Join the conversation! Your thoughts help the community grow.