Javascript Date Validation ( DD/MM/YYYY) & Age Checking

前端 未结 16 1529
遇见更好的自我
遇见更好的自我 2020-12-01 11:09

I\'ve started to work on Javascript recently. What I am testing is checking the DoB in valid format. Next step will be checking the age.

What my HTML code includes

相关标签:
16条回答
  • 2020-12-01 12:13
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title></title>
    <script>
        function dateCheck() {
            debugger;
    
            var inputValues = document.getElementById('dateInput').value + ' ' + document.getElementById('monthInput').value + ' ' + document.getElementById('yearInput').value;
    
            var d = new Date();
            var n = d.getHours();
            var m = d.getMinutes();
            var p = d.getSeconds();
    
            var date = document.getElementById("dateInput").value;
            var month = document.getElementById("monthInput").value;
            var year = document.getElementById("yearInput").value;
    
            var dateCheck = /^(0?[1-9]|[12][0-9]|3[01])$/;
            var monthCheck = /^(0[1-9]|1[0-2])$/;
            var yearCheck = /^\d{4}$/; 
    
            if (month.match(monthCheck) && date.match(dateCheck) && year.match(yearCheck)) {
    
                var ListofDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    
                if (month == 1 || month > 2) {
                    if (date > ListofDays[month - 1]) {
                        alert('Invalid date format!');
                        return false;
                    }
                }
    
                if (month == 2) {
                    var leapYear = false;
                    if ((!(year % 4) && year % 100) || !(year % 400)) {
                        leapYear = true;
                    }
    
                    if ((leapYear == false) && (date >= 29)) {
                        alert('Invalid date format!');
                        return false;
                    }
    
                    if ((leapYear == true) && (date > 29)) {
                        alert('Invalid date format!');
                        return false;
                    }
    
                }
                var flag = 1
            }
    
            else {
                alert("invalid date");
    
    
            }
            if (flag == 1) {
                alert("the date is:" + inputValues + " " + "The time is:" + n + ":" + m + ":" + p);
            }
    
            clear();
        }
    
        function clear() {
            document.myForm.dateInput.value = "";
            document.myForm.monthInput.value = "";
            document.myForm.yearInput.value = "";
        }
    
    
    </script>
    
    </head>
    
    
    <body>  
        <div>  
            <form name="myForm" action="#">   
                <table>
                    <tr>
                        <td>Enter Date</td>
                        <td><input type='text' name='dateInput' id="dateInput" placeholder="Date"  maxlength="2" onclick="dateCheck(document.myForm.dateInput)" onkeypress="return event.charCode === 0 || /\d/.test(String.fromCharCode(event.charCode));"/></td>
                        <td><span id="span1"></span></td>
                    </tr>
                    <tr>
                        <td>Enter Month</td>
                        <td><input type='text' name='monthInput' id="monthInput" placeholder="Month"  maxlength="2" onclick="dateCheck(document.myForm.dateInput)" onkeypress="return event.charCode === 0 || /\d/.test(String.fromCharCode(event.charCode));"/></td>
                        <td><span id="span2"></span></td>
                    </tr>
                    <tr>
                        <td>Enter Year</td>
                        <td><input type='text' name='yearInput' id="yearInput" placeholder="Year" minlength="4" maxlength="4" onclick="dateCheck()" onkeypress="return event.charCode === 0 || /\d/.test(String.fromCharCode(event.charCode));"/></td>
                        <td><span id="span3"></span></td>
                    </tr>
    
                    <tr>
                        <td></td>
                        <td><input type="submit" name="submit" value="Submit" onclick="dateCheck()"/></td>
                    </tr>
                </table>
            </form>  
        </div>   
    </body>  
    </html>
    <td>
    
    0 讨论(0)
  • 2020-12-01 12:13

    It is two problems - is the slashes the right places and is it a valid date. I would suggest you catch input changes and put the slashes in yourself. (annoying for the user)

    The interesting problem is whether they put in a valid date and I would suggest exploiting how flexible js is:

    function isValidDate(str) {
      var newdate = new Date();
      var yyyy = 2000 + Number(str.substr(4, 2));
      var mm = Number(str.substr(2, 2)) - 1;
      var dd = Number(str.substr(0, 2));
      newdate.setFullYear(yyyy);
      newdate.setMonth(mm);
      newdate.setDate(dd);
      return dd == newdate.getDate() && mm == newdate.getMonth() && yyyy == newdate.getFullYear();
    }
    console.log(isValidDate('jk'));//false
    console.log(isValidDate('290215'));//false
    console.log(isValidDate('290216'));//true
    console.log(isValidDate('292216'));//false

    0 讨论(0)
  • 2020-12-01 12:13

    with leading zero for day and month

    var pattern =/^(0[1-9]|1[0-9]|2[0-9]|3[0-1])\/(0[1-9]|1[0-2])\/([0-9]{4})$/;
    

    and with both leading zero/without leading zero for day and month

    var pattern =/^(0?[1-9]|1[0-9]|2[0-9]|3[0-1])\/(0?[1-9]|1[0-2])\/([0-9]{4})$/;
    
    0 讨论(0)
  • 2020-12-01 12:14
    var date=/^[0-9]{1,2}\-[0-9]{1,2}\-[0-9]{1,4}$/;
    
    if(!date.test(form.date.value))
    
    alert("Enter correct date");
    
    else
    alert(" working");
    
    0 讨论(0)
提交回复
热议问题