Date Validation by Javascript

<script type="text/javascript" language="javascript">

 

    function ValidateDate()   

    { 

        var SDate = document.getElementById('txtStartDate').value;

        var EDate =  document.getElementById('txtEndDate').value;  

        var alertReason1 =  'End Date must be greater than or equal to  Start Date.';  

        var alertReason2 =  'End Date can not be less than Current Date.';      

        var endDate = new Date(EDate);              

        var startDate= new Date(SDate);           

        if(SDate != '' && EDate != '' && startDate > endDate)   

        {      

            alert(alertReason1);       

            //document.getElementById('txtEndDate').value = "";      

            return false;   

        }   

        else if(SDate == '')     

        {       

            alert("Please enter Start Date");      

            return false;   

        }

        else if(EDate == '')   

        {       

            alert("Please enter End Date");  

            return false; 

        }  

        return true;

    }

 

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) strDay=strDay.substring(1)

      if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)

      for (var i = 1; i <= 3; i++) {

            if (strYr.charAt(0)=="0" && strYr.length>1) strYr=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 ValidateDate(obj){

 

      if (isDate(obj.value)==false){

          var CurrentDate = new Date();             

          obj.value = CurrentDate.getMonth() + 1  + "/" + CurrentDate.getDate() + "/" + CurrentDate.getFullYear()

            //dt.focus()

            return false;

      }

    return true

 }

 

</script>

 

 

 

<asp:TextBox ID="txtStartDate" runat="server" Width="80px" onblur="ValidateDate(this)"></asp:TextBox>

<asp:TextBox ID="txtEndDate" runat="server" Width="80px" onblur="ValidateDate(this)"></asp:TextBox>

<asp:Button ID="btnShowReport" runat="server" Text="Show Report"  OnClick="btnShowReport_Click" OnClientClick="return ValidateDate()"/>