javascript - 通过 JQuery 设置输入字段值会使 AngularJS 上所需的验证失败

标签 javascript jquery angularjs

我有一个标记为必填的输入字段,如果用户触摸该字段但未提供值或提交了表单,则会显示验证消息。效果很好。

如果我以编程方式为该字段设置一个值(例如使用 JQuery),则仍会显示所需的消息。 这是我的代码

<form
    name="myForm"
    novalidate>
    <input
        id="myField"
        name="myField"
        ng-model="myField"
        type="text"
        required />
    <br />
    <div
        ng-messages="myForm.myField.$error"
        ng-if="myForm.myField.$touched || myForm.$submitted">
        <div ng-message="required">Required field</div>
    </div>
    <br />
    <input
        type="submit"
        value="Send" />
</form>

<script>
    $(function() {
        $('#myField').val("this is a value");
    });

    var app = angular.module('app', [ 'ngMessages' ]);

    app.controller('MyCtrl', function MainCtrl() {
    });
</script>

为输入字段生成的 html 代码显示以下类:

<input id="myField" name="myField" ng-model="myField" type="text" required="" class="ng-pristine ng-invalid ng-invalid-required ng-touched">

我会为此创建一个 planker 或 fiddler,但我无法在这些上 Hook Angular 消息模块。

最佳答案

这对我有用:

$scope.$apply(function(){
  $scope.myForm.myField.$setValidity("required", true);
});

Angular 1.3.14

关于javascript - 通过 JQuery 设置输入字段值会使 AngularJS 上所需的验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26828765/

相关文章:

jquery - 如何在 Bootstrap 日期选择器中禁用即将到来的日期

javascript - 在 $ 'Ng-If' ).change 或 angularfire $add 上使用 "breaks"('#x' 程序

javascript - angularjs XXXService.XXXfunction 不是一个函数

javascript - 排序列表但保留 CSS 标记

javascript - 在javascript中将单词拆分为音节

javascript - 将 Webpack CommonsChunkPlugin 输出拆分为多个文件

包含指定数字或更高数字的任何 div id 的 jQuery 选择器

javascript - AngularJS 变量服务

javascript - 内部有 promise 的 Angular 自定义过滤器

javascript - 解析beforeSave()云代码函数不起作用