angularjs附加表单验证规则(不是输入字段验证)

时间:2015-01-22 16:37:30

标签: angularjs forms validation

将验证规则添加到表单的角度方式是什么,属于单个输入字段,但又属于多个字段值?

E.g:

  • 检查是否至少选中了一个x复选框
  • 检查多个数字输入的总和是否等于给定的数字
  • ...

如果可以使用ng-messages显示错误,那就太好了。我使用的是角1.3.10。

1 个答案:

答案 0 :(得分:1)

没有内置功能,但只需要很少的努力。

ng-messages不依赖于任何具体内容。它只需要一个对象,其密钥可以由ng-message引用。最简单的解决方案是挂钩submit事件(无论如何你可能会做)并运行其他验证。

<form ng-submit="post()" name="myForm">
  <input type="checkbox" name="one" ng-model="one" />
  <input type="checkbox" name="two" ng-model="two" />
  <input type="submit" />
  <div ng-messages="formErrors">
    <p ng-message="tooMany">Please, check one checkbox only</p>
    <p ng-message="required">Please, check a checkbox</p>
  </div>
</form>

在提交时调用函数post(),它会向对象formErrors添加任何错误:

$scope.post = function() {
  ...
  var hasErrors = false;
  $scope.formErrors = {
  };

  if ($scope.one && $scope.two) {
    $scope.formErrors.tooMany = hasErrors = true;
  }

  if (!$scope.one && !$scope.two) {
    $scope.formErrors.required hasErrors = true;
  }

  if (hasErrors) {
     return;
  }
}