Solved

Date validation

Posted on 2001-07-03
11
255 Views
Last Modified: 2012-05-04
Hi.

I have 3 drop down boxes.One contains values for day(1-31),the 2nd one for month and the 3rd for year.

How do I validate that all these boxes contains values other than those set on default?Also how do I validate that there won't be any unusual dates like 29th February(in the case of a non leap year) or 31st of June???Also I need to check for leap year.

Can anyone help?Thanks.
0
Comment
Question by:segafreak
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
11 Comments
 
LVL 4

Expert Comment

by:lokeshv
ID: 6248035
0
 
LVL 1

Expert Comment

by:asere
ID: 6248813
function ValidDate(y, m, d) {
     var mDate = new Date(y, m, d);
     if (y != mDate.getFullYear() || m != mDate.getMonth() || d != mDate.getDate())) {return false;} else {return true;};
};
0
 
LVL 3

Expert Comment

by:dapperry
ID: 6248923
Instead of having the three drop downs, you might want to consider having one text box, and a small window that opens on button click that will allow the user to select the date via a calendar type control. If you want to go down this road, I can provide code for you.

:) dapperry
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:segafreak
ID: 6250998
Ok,I think I'll post my current code down.I don't know why the validateDate function is not working correctly...

<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Add Upcoming Events</title>
<script language="Javascript">
<!--
function validateFormTH(f)
{

      var eDay = document.addEvents.day[document.addEvents.day.selectedIndex].value;
      var eMonth = document.addEvents.month[document.addEvents.month.selectedIndex].value;
      var eYear = document.addEvents.year[document.addEvents.year.selectedIndex].value;
      
      if(document.addEvents.day.selectedIndex == 0)                        
      {
            alert("Please select a day to continue")
            return false
      }
      else if(document.addEvents.month.selectedIndex == 0)
      {
            alert("Please select a month to continue")
            return false
      }
      else if(document.addEvents.year.selectedIndex == 0)
      {
            alert("Please select a year to continue")
            return false
      }
      else if(validateDate(eDay, eMonth, eYear))
      {
                  return true            
      }
      else
      {
            return false
      }
      
}

function validateDate(day, month, year)
{
      
//30 days month
      if((month == "4") || (month == "6") || (month == "9") || (month == "11"))
      {
            if(day == "31")
            {

                  alert("There is only 30 days in the month of " + month + ".")
                  return false;
            }
      
      }
            
      else if(month == "2")
      {
            if(year % 4 == 0)//leap year
            {
                  if((day == "30") || (day == "31"))
                  {
                        alert("There is only 29 days in the month of february.")
                        return false;
                  }
            }
            
            else if(year % 4 != 0)
            {
                  if((day == "29") || (day == "30") || (day == "31"))
                  {
                        alert("There is only 28 days in the month of february.")
                        return false;
                  }
            }
      }
      
            return true;
}

function validateNum(field) {
var valid = "0123456789"
var ok = "yes";
var temp;
for (var i=0; i<field.value.length; i++) {
temp = "" + field.value.substring(i, i+1);
if (valid.indexOf(temp) == "-1") ok = "no";
}
if (ok == "no") {
alert("Invalid entry!  Only numbers are accepted!")
field.focus();
field.select();
   }
}


//--->
</script>
</head>

<body bgcolor="#336666">
<div align="center">
<form name="addEvents" action="a_addedEvent_Successful.asp" method="POST" onsubmit="return validateFormTH(this.form)">
<p align="center">&nbsp;</p>
<p align="center"><font size="5" color="#FFFFFF">Add Upcoming Events</font></p>
<hr size=1 width="50%">
<br>
<br>
<table>
<tr><td><font color="#FFFFFF">Type of Events&nbsp;</font> </td><td><font color="#FFFFFF">:</font></td>
<td> <select name="eventType">
<option selected>Events</option>
<option value="Course">Course</option>
<option value="Seminair">Talk</option>
<option value="Gathering">Gathering</option>
</select></td></tr>
<tr><td><font color="#FFFFFF">Name of Event&nbsp;</font> </td> <td><font color="#FFFFFF">:</font></td><td><input type="text" name="eventName" size="30"></td></tr>
<tr><td><font color="#FFFFFF">Date</font> </td><td><font color="#FFFFFF">:</font></td>
<td><select name="day">
<option selected>Day</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select name="month">
<option selected>Month</option>
<option value="January">January</option>
<option value="February">February</option>
<option value="March">March</option>
<option value="April">April</option>
<option value="May">May</option>
<option value="June">June</option>
<option value="July">July</option>
<option value="August">August</option>
<option value="September">September</option>
<option value="October">October</option>
<option value="November">November</option>
<option value="December">December</option>
</select>
<select name="year">
<option selected>Year</option>
<option value="2001">2001</option>
<option value="2002">2002</option>
</select>
</td></tr>
<tr><td><font color="#FFFFFF">Venue</font> </td><td><font color="#FFFFFF">:</font></td><td><input type="text" name="venue" size="25"> </td></tr>
<tr><td><font color="#FFFFFF">Fees</font></td><td><font color="#FFFFFF">: S$</font></td><td><input type="text" name="fee" size="10" onBlur="validateNum(this)"></td></tr>
<tr><td><font color="#FFFFFF">Duration</font></td><td><font color="#FFFFFF">:</font></td><td><input type="text" name="duration" size="10"> </td></tr>
<tr><td><font color="#FFFFFF">Description</font> </td><td><font color="#FFFFFF">:</font></td><td><textarea name="desc" rows="4" cols="23">
</textarea></td></tr>
</table>
<br>

<input type="submit" value="Add Event">&nbsp<input button type="reset" value="Reset" name="reset">
</div>
</form>

</body>

</html>
0
 
LVL 1

Expert Comment

by:balanagu
ID: 6251757
try this, i did the corrections in validatedate() and month list box.

-----------------

<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Add Upcoming Events</title>
<script language="Javascript">
<!--
function validateFormTH(f)
{

     var eDay = document.addEvents.day[document.addEvents.day.selectedIndex].value;
     var eMonth = document.addEvents.month[document.addEvents.month.selectedIndex].value;
     var eYear = document.addEvents.year[document.addEvents.year.selectedIndex].value;
     
     if(document.addEvents.day.selectedIndex == 0)                    
     {
          alert("Please select a day to continue")
          return false
     }
     else if(document.addEvents.month.selectedIndex == 0)
     {
          alert("Please select a month to continue")
          return false
     }
     else if(document.addEvents.year.selectedIndex == 0)
     {
          alert("Please select a year to continue")
          return false
     }
     else if(validateDate(eDay, eMonth, eYear))
     {
        alert("valid date")
        return true          
     }
     else
     {
                              alert("invalid date");
          return false
     }
}

function validateDate(day, month, year)
{
      var objDt=new Date(year,month,day)
      if(objDt.getDate()==day && objDt.getMonth()==month && objDt.getYear()==year)
      {
            return true;
      }
      else
      {
            return false;
      }
}

function validateNum(field) {
var valid = "0123456789"
var ok = "yes";
var temp;
for (var i=0; i<field.value.length; i++) {
temp = "" + field.value.substring(i, i+1);
if (valid.indexOf(temp) == "-1") ok = "no";
}
if (ok == "no") {
alert("Invalid entry!  Only numbers are accepted!")
field.focus();
field.select();
  }
}


//--->
</script>
</head>
<body bgcolor="#336666">
<div align="center">
<form name="addEvents" action="a_addedEvent_Successful.asp" method="POST" onsubmit="return validateFormTH(this.form)">
<p align="center">&nbsp;</p>
<p align="center"><font size="5" color="#FFFFFF">Add Upcoming Events</font></p>
<hr size=1 width="50%">
<br>
<br>
<table>
<tr><td><font color="#FFFFFF">Type of Events&nbsp;</font> </td><td><font color="#FFFFFF">:</font></td>
<td> <select name="eventType">
<option selected>Events</option>
<option value="Course">Course</option>
<option value="Seminair">Talk</option>
<option value="Gathering">Gathering</option>
</select></td></tr>
<tr><td><font color="#FFFFFF">Name of Event&nbsp;</font> </td> <td><font color="#FFFFFF">:</font></td><td><input
type="text" name="eventName" size="30"></td></tr>
<tr><td><font color="#FFFFFF">Date</font> </td><td><font color="#FFFFFF">:</font></td>
<td><select name="day">
<option selected>Day</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select name="month">
<option selected>Month</option>
<option value="0">January</option>
<option value="1">February</option>
<option value="2">March</option>
<option value="3">April</option>
<option value="4">May</option>
<option value="5">June</option>
<option value="6">July</option>
<option value="7">August</option>
<option value="8">September</option>
<option value="9">October</option>
<option value="10">November</option>
<option value="11">December</option>
</select>
<select name="year">
<option selected>Year</option>
<option value="2001">2001</option>
<option value="2002">2002</option>
</select>
</td></tr>
<tr><td><font color="#FFFFFF">Venue</font> </td><td><font color="#FFFFFF">:</font></td><td><input type="text"
name="venue" size="25"> </td></tr>
<tr><td><font color="#FFFFFF">Fees</font></td><td><font color="#FFFFFF">: S$</font></td><td><input type="text"
name="fee" size="10" onBlur="validateNum(this)"></td></tr>
<tr><td><font color="#FFFFFF">Duration</font></td><td><font color="#FFFFFF">:</font></td><td><input
type="text" name="duration" size="10"> </td></tr>
<tr><td><font color="#FFFFFF">Description</font> </td><td><font color="#FFFFFF">:</font></td><td><textarea
name="desc" rows="4" cols="23">
</textarea></td></tr>
</table>
<br>

<input type="submit" value="Add Event">&nbsp<input button type="reset" value="Reset" name="reset">
</div>
</form>

</body>

</html>

0
 
LVL 1

Expert Comment

by:balanagu
ID: 6251772
you can also change your numerical validation function as,

function validateNum(field) {
     var numReg= /[^\d]/
     if (numReg.test(field.value)
     {
          alert("Invalid entry!  Only numbers are accepted!")
          field.focus();
          field.select();
     }
}


balanagu
0
 

Accepted Solution

by:
bvjagan earned 15 total points
ID: 6251848
Hi seqafreak,

   Try this..

<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Add Upcoming Events</title>
<script language="Javascript">
<!--
function validateFormTH(f)
{

     var eDay = document.addEvents.day[document.addEvents.day.selectedIndex].value;
     var eMonth = document.addEvents.month[document.addEvents.month.selectedIndex].value;
     var eYear = document.addEvents.year[document.addEvents.year.selectedIndex].value;
     //alert(eDay);
     //alert(eMonth);
     //alert(eYear);
     if(document.addEvents.day.selectedIndex == 0)
     {
          alert("Please select a day to continue")
          return false
     }
     else if(document.addEvents.month.selectedIndex == 0)
     {
          alert("Please select a month to continue")
          return false
     }
     else if(document.addEvents.year.selectedIndex == 0)
     {
          alert("Please select a year to continue")
          return false
     }
     else if(validateDate(eDay, eMonth, eYear))
     {
               return true
     }
     else
     {
          return false
     }

}

function validateDate(day1, month1, year1)
{
//alert(day1);
//alert(month1);
//alert(year1);
if (isNaN(day1) ||isNaN(month1)||isNaN(year1))
      {
             alert("Invalid Date");

            return false;
      }

var day = parseInt(day1);
      var month = parseInt(month1);
      var year = parseInt(year1);


      if((year<1900)||( year >9999))
      {
             alert("Invalid Date");

            return false;
      }

      if((month>12)||(month < 1))
      {
            alert('Invalid Date');

            return false;
      }


      if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))
      {
            if((day>31)||(day<1))
            {
                  alert('Invalid Date');

                  return false;
            }
      }
      else if((month==4)||(month==6)||(month==9)||(month==11))
      {
            if((day>30)||(day<1))
            {
                  alert('Invalid Date');

                  return false;
            }
      }
      else
      {
            if((year%4)==0)
            {
                  if((day>29)||(day<1))
                  {
                        alert('Invalid Date');

                        return false;
                  }
            }
            else
            {
                  if((day>28)||(day<1))
                  {
                        alert('Invalid Date');

                        return false;
                  }
            }
      }
      return true;
}

function validateNum(field) {
var valid = "0123456789"
var ok = "yes";
var temp;
for (var i=0; i<field.value.length; i++) {
temp = "" + field.value.substring(i, i+1);
if (valid.indexOf(temp) == "-1") ok = "no";
}
if (ok == "no") {
alert("Invalid entry!  Only numbers are accepted!")

field.select();
  }
}


//--->
</script>
</head>

<body bgcolor="#336666">
<div align="center">
<form name="addEvents" action="#" method="POST" onsubmit="return validateFormTH(this.form)">
<p align="center">&nbsp;</p>
<p align="center"><font size="5" color="#FFFFFF">Add Upcoming Events</font></p>
<hr size=1 width="50%">
<br>
<br>
<table>
<tr><td><font color="#FFFFFF">Type of Events&nbsp;</font> </td><td><font color="#FFFFFF">:</font></td>
<td> <select name="eventType">
<option selected>Events</option>
<option value="Course">Course</option>
<option value="Seminair">Talk</option>
<option value="Gathering">Gathering</option>
</select></td></tr>
<tr><td><font color="#FFFFFF">Name of Event&nbsp;</font> </td> <td><font color="#FFFFFF">:</font></td><td><input
type="text" name="eventName" size="30"></td></tr>
<tr><td><font color="#FFFFFF">Date</font> </td><td><font color="#FFFFFF">:</font></td>
<td><select name="day">
<option selected>Day</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select name="month">
<option selected>Month</option>
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
<select name="year">
<option selected>Year</option>
<option value="1998">1998</option>
<option value="1999">1999</option>
<option value="2000">2000</option>
<option value="2001">2001</option>
<option value="2002">2002</option>
</select>
</td></tr>
<tr><td><font color="#FFFFFF">Venue</font> </td><td><font color="#FFFFFF">:</font></td><td><input type="text"
name="venue" size="25"> </td></tr>
<tr><td><font color="#FFFFFF">Fees</font></td><td><font color="#FFFFFF">: S$</font></td><td><input type="text"
name="fee" size="10" onBlur="validateNum(this)"></td></tr>
<tr><td><font color="#FFFFFF">Duration</font></td><td><font color="#FFFFFF">:</font></td><td><input
type="text" name="duration" size="10"> </td></tr>
<tr><td><font color="#FFFFFF">Description</font> </td><td><font color="#FFFFFF">:</font></td><td><textarea
name="desc" rows="4" cols="23">
</textarea></td></tr>
</table>
<br>

<input type="submit" value="Add Event">&nbsp<input button type="reset" value="Reset" name="reset">
</div>
</form>

</body>

</html>
0
 

Author Comment

by:segafreak
ID: 6251864
erm,the date should not only validate today's date,it should validate furthur dates.
0
 

Author Comment

by:segafreak
ID: 6251878
Finally,someone posts up the solution I want!!!Thanks a lot man!
0
 
LVL 1

Expert Comment

by:balanagu
ID: 6251914
poor fellow, i gave a better validation with less coding.

balanagu
0
 
LVL 1

Expert Comment

by:jswalia
ID: 7111930
you can try the combination of JavaScript with VBScript:

<Script Language='Javascript'>
 function validDate()
 {
   var month, day, year;
   month = form1.cboMonth.value;
   day = form1.cboDay.value;
   year = form1.cboYear.value;
   if !checkDate(m,d,y)
   {
    alert('Not a valid Date');
   }
 }
</Script>

<Script Language='VBScript'>
 function checkDate(m,d,y)
   dim dt
   dt = m & "/" & d & "/" & y
   checkDate = isdate(dt)
 end function
</Script>
0

Featured Post

MS Dynamics Made Instantly Simpler

Make Your Microsoft Dynamics Investment Count  & Drastically Decrease Training Time by Providing Intuitive Step-By-Step WalkThru Tutorials.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I've been trying to accomplish this for a while and it just struck me yesterday how to accomplish this task. I have done searches all over the internet looking for ways to email pages from my applications and finally I have done it!!! Every single s…
This article will give core knowledge of JavaScript and will head in to your first JavaScript program. I am Durvesh Naik and I am here to deal with this series of JavaScript. I will teach you JavaScript in part wise , as its quite boring to read big…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…
Suggested Courses

630 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question