【问题标题】:AngularJS required input, set with code, invalidAngularJS 需要输入,用代码设置,无效
【发布时间】:2017-03-05 06:21:02
【问题描述】:

我有一个设置为required 的文本输入。该字段是日期范围选择器。当日期范围选择器的代码输入文本时,角度不会将输入识别为已填充。它仍然包含一个验证错误,说明该字段是必需的。有任何想法吗?我试过 $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>

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

【问题讨论】:

  • 你使用的是 ui-bootstrap 还是纯 html 控件?
  • 资料不全,分享你的html代码!
  • 是的,使用引导程序
  • 我认为您必须使用 $watch 让 Angular 知道范围已更改。由于您正在使用 jQuery 更新元素的值,因此角度不会意识到这一点。 stackoverflow.com/questions/22002956/…henriquat.re/directives/…
  • 你是在同时使用 jquery 和 angulr 吗?

标签: javascript angularjs


【解决方案1】:

好吧,我终于想通了。问题是日期范围选择器没有以角度方式设置值。它是用 jQuery 做的:

$('#daterange').val(picker.startDate.format('MM/DD/YYYY') + ' - ' + picker.endDate.format('MM/DD/YYYY'));

通过使用来自日期范围选择器的相同回调,但使用角度方式设置值:

$scope.daterange = (picker.startDate.format('MM/DD/YYYY') + ' - ' + picker.endDate.format('MM/DD/YYYY'));

验证器接受它。谢谢大家的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多