在AngularJS中将表单标记为未提交

时间:2014-12-24 22:43:53

标签: angularjs

在AngularJS中,有没有办法将已提交的表单标记为未提交(因此它会丢失ng-submitted类?

背景:

在我的CSS中,我正在使用角度验证类来完成以下任务:

  • 最初,所有输入都有正常的边框颜色。
  • 如果用户修改输入以使其值无效,请将边框颜色设置为红色。
  • 如果用户单击提交按钮,请将所有无效输入的边框颜色设置为红色。

我正在这样做:

input.ng-dirty.ng-invalid, .ng-submitted .ng-invalid {
    border-color: #F00;
}

工作正常。现在我有一个提交异步请求的表单,如果服务器响应成功状态,我想清除表单(并有效地将其重置为原始状态)。问题是当我清除表单时,它仍然具有.ng-submitted类,因此所有必需字段都有一个红色边框。但是我希望他们都有一个正常的边界。

我应该能够使用$setPristine()将所有字​​段标记为原始字符,但我没有看到任何方法将表单标记为未提交。这是可能的,还是我需要创建和维护自己的类来执行此操作?

1 个答案:

答案 0 :(得分:10)

您可以重置表单,然后使用以下代码片段将其标记为unsubmitted

<强> HTML

<input type="button" ng-click="reset(form)" value="Reset" />

Angular Script:

$scope.reset = function(form) {
    if (form) {
      form.$setPristine();
      form.$setUntouched();
    }
    $scope.user = angular.copy($scope.master);
  };

这取自https://docs.angularjs.org/guide/forms