验证日期输入 - 最小值和最大值

时间:2013-11-04 17:51:54

标签: javascript html5 date input

我对HTML5有一点小问题。

<input type="date" id="birthday" />

我想在JavaScript中检查此字段。

最小。值 - 01-01-1990。

我不知道如何解析日期对象并检查是否正确。

HTML5中的属性min和max无效。我必须用JavaScript编写验证。

1 个答案:

答案 0 :(得分:1)

您可以使用JavaScript验证库,它使用HTML5输入属性,例如min和max:例如jQuery Validation

<input id="mydate" name="mydate" type="date" min="2000-01-01" max="2010-31-12" required />

<script>
    $("#mydate").validate();
</script>

看一下这个工作示例的小提琴:http://jsfiddle.net/a5Mvt/1/

此外,您可能希望使用Modernizr之类的库来检查input[type="date"]的浏览器支持,并使用jQuery UI中的datepicker控件或类似内容(如果不支持)。


更新:这是一个版本,不使用jQuery或任何其他附加库:

<input id="mydate" name="mydate" type="date" min="2000-01-01" max="2010-31-12" required />
<span id="mydate_error" style="display:none;"></span>

<script>
    var mydate = document.getElementById('mydate'),
        mydateError = document.getElementById('mydate_error');

    mydate.addEventListener('input', function() {
        if (!mydate.value.match(/\d{4}-\d{1,2}-\d{1,2}/)) {
            mydateError.innerHTML = 'Please specify a valid date in the form 1990-02-22';
            mydateError.style.display = 'inherit';
        } else {
            var value = new Date(mydate.value),
                min = new Date(mydate.min),
                max = new Date(mydate.max);
            if (value < min || value > max) {
                mydateError.innerHTML = 'Date has to be between ' + min.toDateString() + ' and ' + max.toDateString();
                mydateError.style.display = 'inherit';
            } else {
                mydateError.style.display = 'none';
            }
        }
    });
</script>

更新了小提琴:http://jsfiddle.net/a5Mvt/2/