javascript - 以编程方式将所有表单字段设置为 ng-touched 表单提交

标签 javascript angularjs twitter-bootstrap validation

HTML:

<div class="form-group" 
     ng-class="{ 'has-error' : form.firstName.$invalid && form.firstName.$touched }">
  <label for="firstName" 
         class="control-label">
         First Name
  </label>
  <input type="text" 
         name="firstName" 
         id="firstName" 
         ng-model="editableUser.firstName" 
         class="form-control" 
         required>
  <span class="help-block" 
        ng-show="form.firstName.$error.required && form.firstName.$touched">
        First Name is required
  </span>
</div>

<input type="submit" 
       ng-click="submit()" 
       value="Submit" 
       class="btn btn-default">

当用户点击提交时,我试图让我的“有错误”类针对无效字段启动。

我想你可以这样做:

$scope.submit = function () {
  if ($scope.form.$invalid) {
    angular.forEach($scope.form.$invalid, function(field) {
      field.$setTouched();
    });
    alert("Form is invalid.");
  }
};

但是https://docs.angularjs.org/api/ng/type/form.FormController中没有$setTouched方法

编辑: 意识到 $setTouched 确实存在,它在 https://docs.angularjs.org/api/ng/type/ngModel.NgModelController

最佳答案

if ($scope.form.$invalid) {
    angular.forEach($scope.form.$error, function (field) {
        angular.forEach(field, function(errorField){
            errorField.$setTouched();
        })
    });
    alert("Form is invalid.");
}

笨蛋: http://plnkr.co/edit/XmvoTkIQ0yvFukrVSz11

关于javascript - 以编程方式将所有表单字段设置为 ng-touched 表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30628611/

相关文章:

javascript - 如何使用 jQuery 在 javascript 中获取节点的所有子节点作为数组的项目

javascript - react +火力地堡 : How to add item to list data into firebase realtime database

javascript - 如何使用extjs4.2创建单个运行文本?

javascript - plupload在IE 9中好像不能上传文件,在其他浏览器中也可以

javascript - 使用 RESTANGLE 根据 AngularJs 上的 url 参数检索记录

javascript - AngularJS:输入类型为 "email"的 ngMessage 奇怪行为

javascript - 我正在使用 Angular "Date"过滤器,但这个数字表达式是什么?

php - 如何使用 JQUERY 设置复选框选中和未选中事件

css - Bootstrap config.json - 下一步做什么?

html - 如何使按钮彼此靠近?