AngularJS - 最大验证不适用于时间输入

时间:2018-03-29 10:06:24

标签: angularjs forms validation time

我正在使用AngularJS 1.5.3编写应用程序。

我有一个带时间输入框的输入表单。

我需要在包装盒上进行验证,以便用户以后无法选择时间。

这是一个片段:

<div ng-controller="myController as accvm">
    <form name="accvm.addForm" novalidate>
        <div class="item item-input" ng-class="{ 'has-error' : accvm.addForm.time.$invalid }">
            <span class="input-label">'Time'</span>
            <input name="time" type="time" id="timeInput" max="{{ accvm.data.maxTime | date:'HH:mm' }}" ng-model="accvm.data.time" ng-change="accvm.timeChange()" style="text-align: right" required />
        </div>
    </form>
</div>

出于某种原因,我的验证总是会触发,并说价值是错误的。我不确定为什么会这样。

这是我的jsfiddle:http://jsfiddle.net/aubz88/j25jwtL2/

2 个答案:

答案 0 :(得分:0)

就我理解的日期而言,限制输入的输入并不是很好。您可以添加最小值,然后当用户添加时间而不是添加时,它将重置为最小值。 我建议使用像bootstrap的datepicker这样的东西,它确实为你提供了你想要的东西,但是以实际的日期选择器的形式。

文档https://angular-ui.github.io/bootstrap/#!#datepicker 您可以使用maxDate属性设置最大日期...

另外,根据w3schools中的定义,max和min不能在某些浏览器中工作&#34; max属性不适用于Internet Explorer 10+或Firefox中的日期和时间,因为IE 10+和Firefox可以不支持这些输入类型。&#34;

https://www.w3schools.com/tags/att_input_max.asp

答案 1 :(得分:0)

我通过使用1970而不是当前年份来实现它,最大值起作用。

        var time = new Date(
            1970, //today.getFullYear(),
            0, //today.getMonth(),
            1, //today.getDate(),
            today.getHours(),
            today.getMinutes(),
            0,
            0
        );