HiveBrain v1.2.0
Get Started
← Back to all entries
patternjavascriptMinor

Date validation with html5 dates

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
withdatesvalidationdatehtml5

Problem

This code validates the following:

  • enddate should not be less than or equal to startdate.



  • startdate should not be less than or equal to the date today unless document.getElementById("ltype").value == "1".



  • The maximum gap between startdate and enddate is one year, more than that should cause an error alert.



Please review my code. I think I covered all test cases, but I am extremely new to JavaScript, so this code might have bugs. And is it fine to compare dates as strings? I did this because as far as I know HTML5 date is a string.

// creates a date object then converts it to a string with yyyy-mm-dd format
function dateFormat(date, addyear) { // addyear is boolean, true means add another year to the date
    var dd = date.getDate();
    var mm = date.getMonth()+1;
    var yyyy = date.getFullYear();
    if (addyear) {
        yyyy++;
    }
    if(dd yeardate) {
        alert("Dates out of range");
        return false; 
    }
    if (document.getElementById("ltype").value != "1" && startdate <= today) {
        alert("Error! date goes backwards!");
        return false;
    }
    return true
}

Solution


  • Instead of giving your variables names like dd/mm/yyyy, you should give them names like day, month, year. Other names like d1 or d2. Should have better names.



  • You need some space between operators. For example, you have this condition in your code: if(dd



  • You should add some more comments, e.g, describe what the functions/code blocks do, and how the processes behind them work.



  • Finally, just a small nitpicky thing. Both of your functions should be in camelCase. One of them is in underscore_case`.

Context

StackExchange Code Review Q#94468, answer score: 4

Revisions (0)

No revisions yet.