jQuery: validating a date

by gabrieleromanato

HTML

<form id="date" action="#" method="post">
    <div>
        <label for="datetime">gg/mm/aaaa<input type="text" name="datetime" id="datetime" /></label>
        <input type="submit" name="submit" id="submit" value="Check" />
    </div>
</form>

CSS

.error {
    display: block;
    margin: 0.5em 0;
    color: red;
}

JavaScript

$('#date').submit(function(e) {
    e.preventDefault();
    if ($('#errors').length) {
        $('#errors').remove();
    }
    var datetime = $('#datetime').val();
    var errors = '';
    if (!/^\d{2}\/\d{2}\/\d{4}$/.test(datetime)) {
        errors += '<span class="error">Not a valid date format</span>';
    } else {

        var parts = datetime.split('/');
        var day = parts[0];
        var month = parts[1];
        var year = parts[2];
        var $day = (day.charAt(0) == '0') ? day.charAt(1) : day;
        var $month = (month.charAt(0) == '0') ? month.charAt(1) : month;

        if ($day > 31 || $day < 1) {
            errors += '<span class="error">Not a valid day</span>';
        }

        if ($month > 12 || $month < 1) {
            errors += '<span class="error">Not a valid month</span>';
        }

        var now = new Date();
        var currentYear = now.getFullYear();

        if (year > currentYear || year < (currentYear - 100)) {
            errors += '<span class="error">Not a valid year</span>';
        }


    }

    if (errors != '') {
        $('<div id="errors"/>').html(errors).appendTo('#date');
    } else {

        alert('Valid date');
    }





});