我有一套简单的代码:
<div ng-app="myApp">
<div ng-controller="test">
{{time}}<br>
<input ng-model="time" type="time" placeholder="HH:mm" min="08:00" max="17:00" required>
</div>
</div>
可以从这里执行:http://jsfiddle.net/U3pVM/9824/ 这个JSFiddle正在使用1.3.0.beta 17
如果我将小提琴更改为1.3版本,它会将每个时间视为无效。
(如果时间有效,它将显示在数据输入框的上方。)
有关此验证有什么问题的想法吗?
答案 0 :(得分:1)
可能是如何在角度中实现输入type time验证。因此,在您的情况下,由于您提供的日期,您的输入超出max
限制(在解析器验证最大值期间)。即new Date()
这是当前日期。当您将max
值指定为17:00
时,将其转换为ISO日期格式以进行验证(这对于验证时间而言很奇怪),即将其转换为
纪元日期,即它将成为1970-01-01T17:00:00.00000Z
,并比较时间,看它是否超过。您可以通过提供max作为有效的ISO日期时间格式来测试它。
实施例: -
<强> Demo 强>
如果您未指定任何日期部分,则输入类型时间&ng-model需要Epoch
的确切日期(即1 January 1970
)。它以指定时间1/1/1970
输出。
如果您确实在DOM中直接使用时间和设置值elm.valueAsDate = new Date(2014, 1, 1, 7, 34);
,则元素的HTML5属性(elm.validity
)将返回有效的true,因此这肯定是使用角度实现。
因此,在您的情况下,请尝试将时间设置为: -
实施例: -
app.controller('MainCtrl', function($scope) {
var dt = new Date();
$scope.time = new Date(1970,0,1,dt.getHours(),dt.getMinutes(),dt.getSeconds());
});
<强> Demo 强>