我正在使用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/
答案 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;
答案 1 :(得分:0)
我通过使用1970而不是当前年份来实现它,最大值起作用。
var time = new Date(
1970, //today.getFullYear(),
0, //today.getMonth(),
1, //today.getDate(),
today.getHours(),
today.getMinutes(),
0,
0
);