In this article I will explain with an example, how to perform dynamic date Validation using JavaScript.
 
 
JavaScript Script for enforcing dd/MM/yyyy format validation
Inside the window.onload event handler, first all the HTML INPUT elements are fetched from HTML Table and then a FOR loop is executed over the fetched elements.
Inside the FOR loop, a check is performed to determined, whether the HTML INPUT element is a TextBox and also whether it has a CssClass named date-format.
If both the conditions are TRUE, then
1. MaxLength attribute is added and its value is set to 10.
2. KeyDown event handler is assigned which calls the IsNumeric JavaScript function.
3. KeyUp event handler is assigned which calls the ValidateDateFormat JavaScript function.
 
IsNumeric function
This function allows only Numbers (digits) to be entered into the TextBox.
It takes INPUT element and KeyCode (the code of the pressed key) as parameter.
Then, a check is performed by checking the Key Codes and cancelling the all Key Codes which are not Numbers (digits) and it also automatically adds Slash ( / ) character.
 
ValidateDateFormat function
This function validates the date value against the Regular Expression and if the validation fails i.e. if the date Format is not dd/MM/yyyy, the HTML SPAN is displayed with the error message.
<script type="text/javascript">
    var isShift = false;
    var seperator = "/";
    window.onload = function () {
        //Reference all INPUT elements in the Table.
        var inputs = document.getElementsByTagName("input");
 
        //Loop through all INPUT elements.
        for (var i = 0; i < inputs.length; i++) {
            //Check whether the INPUT element is TextBox.
            if (inputs[i].type == "text") {
                //Check whether Date Format Validation is required.
                if (inputs[i].className.indexOf("date-format") != 1) {
 
                    //Set Max Length.
                    inputs[i].setAttribute("maxlength", 10);
 
                    //Only allow Numeric Keys.
                    inputs[i].onkeydown = function (e) {
                        return IsNumeric(this, e.keyCode);
                    };
 
                    //Validate Date as User types.
                    inputs[i].onkeyup = function (e) {
                        ValidateDateFormat(this, e.keyCode);
                    };
                }
            }
        }
    };
 
    function IsNumeric(input, keyCode) {
        if (keyCode == 16) {
            isShift = true;
        }
        //Allow only Numeric Keys.
        if (((keyCode >= 48 && keyCode <= 57) || keyCode == 8 || keyCode <= 37 || keyCode <= 39 || (keyCode >= 96 && keyCode <= 105)) && isShift == false) {
            if ((input.value.length == 2 || input.value.length == 5) && keyCode != 8) {
                input.value += seperator;
            }
 
            return true;
        }
        else {
            return false;
        }
    };
 
    function ValidateDateFormat(input, keyCode) {
        var dateString = input.value;
        if (keyCode == 16) {
            isShift = false;
        }
        var regex = /(((0|1)[0-9]|2[0-9]|3[0-1])\/(0[1-9]|1[0-2])\/((19|20)\d\d))$/;
 
        //Check whether valid dd/MM/yyyy Date Format.
        if (regex.test(dateString) || dateString.length == 0) {
            ShowHideError(input, "none");
        } else {
            ShowHideError(input, "block");
        }
    };
 
    function ShowHideError(textbox, display) {
        var div = textbox.parentNode;
        var spans = div.getElementsByTagName("span");
         for (var i = 0; i < spans.length; i++) {
                //Check whether SPAN has CSS class: error.
                if (spans[i].className.indexOf("error") != 1) {
                    //Show or hide HTML SPAN.
                    spans[i].style.display = display;
               }
          }
    };
</script>
 
 
Enforcing dd/MM/yyyy format validation using JavaScript in HTML
Inside the HTML page, you need to place an HTML TextBox and am HTML SPAN inside an HTML DIV.
TextBox – The TextBox will be set with CSS class date-format.
SPAN – The SPAN element will be used for displaying error message and it must be set with a CSS class error.
Note: This is a requirement that you need to place the TextBox and the HTML SPAN pair inside a common HTML DIV, otherwise the SCRIPT won’t work.
 
<div>
    Birth Date:
    <input type="text" class="date-format" />
    <span class="error" style="display: none">Invalid Date. Only dd/MM/yyyy format allowed.</span>
</div>
 
 
Screenshot
Enforce dd/MM/yyyy format validation using JavaScript in HTML
 
 
Browser Compatibility
The above code has been tested in the following browsers only in versions that support HTML5.
Microsoft Edge  FireFox  Chrome  Safari  Opera
* All browser logos displayed above are property of their respective owners.
 
 
Demo
 
 
Downloads