我有一个设置为required
的文本输入。该字段是日期范围选择器。当日期范围选择器的代码输入文本时,angular不会将输入识别为已填充。它仍然包含一个验证错误,说明该字段是必需的。有任何想法吗?我试过$setValidity('required',true);
没有运气。
我正在使用此日期范围选择器:Link
这是代码。首先在html方面,我的输入:
<input class="form-control" type="text" name="daterange" id="daterange" ng-model="daterange" placeholder="Pick A Date"/>
然后在javascript方面我将输入设置为日期范围选择器
$('input[name="daterange"]').daterangepicker({
"autoApply": true,
"autoUpdateInput": false
});
$('#daterange').on('apply.daterangepicker', function(ev, picker) {
$('#daterange').val(picker.startDate.format('MM/DD/YYYY') + ' - ' + picker.endDate.format('MM/DD/YYYY'));
});
$('#daterange').on('cancel.daterangepicker', function(ev, picker) {
$('#daterange').val('');
});
我在HTML端使用一些角度来显示我的所有表单错误
<ul>
<li ng-repeat="(key, errors) in requestForm.$error track by $index"> <strong>{{ key }}</strong> errors
<ul>
<li ng-repeat="e in errors">{{ e.$name }} has an error: <strong>{{ key }}</strong>.</li>
</ul>
</li>
如果我手动输入字段,它将验证。但是使用日期范围选择器却没有。
答案 0 :(得分:0)
好吧,我终于想通了。问题是日期范围选择器没有设置角度方式的值。它是用jQuery做的:
$('#daterange').val(picker.startDate.format('MM/DD/YYYY') + ' - ' + picker.endDate.format('MM/DD/YYYY'));
通过使用与daterange选择器相同的回调,但使用angular方式设置值:
$scope.daterange = (picker.startDate.format('MM/DD/YYYY') + ' - ' + picker.endDate.format('MM/DD/YYYY'));
验证者选择它。感谢大家的帮助