AngularJS需要输入,用代码设置,无效

时间:2017-03-05 06:21:02

标签: javascript angularjs

我有一个设置为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>

如果我手动输入字段,它将验证。但是使用日期范围选择器却没有。

1 个答案:

答案 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'));

验证者选择它。感谢大家的帮助