重置表单中的所有错误

时间:2015-01-31 20:45:55

标签: angularjs forms validation

我想为AngularJS添加一些小功能。 它是关于表单验证的。 让我们假设我有一个表格。 我填写它并将填充的对象发送到服务器。 服务器使用此对象进行了一些操作,并确定了标题'字段不正确。 服务器返回有关无效标题的消息(让我们假设只能在服务器上进行此验证以避免客户端验证解决方法)。

我以编程方式添加了新的无效错误。 ($ scope.myForm.title。$ setValidity(' bad',false)); 我有.ng-invalid-bad类,用红色边框标记我的标题字段。 好。 我更改标题并将此对象发送到服务器。 但此时我的描述'值与标题,服务器答案和描述中的错误冲突'。 所以现在我必须重置所有字段的所有有效性,并添加新的' bad'有效性的描述'领域。但我没有找到重置所有字段的整个表单的功能。 我尝试了$ setPristine和其他人,但是字段仍然存在“无效 - 不好”的情况。类。只有当我为每个字段调用$ setValidity(' bad',true)时,我才能删除它。

我为本功能在本地副本中为angular.js做了一些更新。

问题:  1.我是否会错过有关此功能的文档内容?  2.如果不是 - 我可以开始使用此功能准备我的PR角度吗?

example: http://plnkr.co/edit/aev16Y3cAxTljhctUDMI    
  • 尝试填充第一个输入,将第二个输入留空。点击GO!您应该看到第二个标有红色边框的字段。
  • 清理第一个输入,然后用一些文本填充第二个输入。点击GO!您应该看到所有输入都标有红色边框。

1 个答案:

答案 0 :(得分:0)

如果您需要重置表单中的所有字段,只需在表单中添加一个重置按钮即可。

    <!DOCTYPE html>
<html ng-app="formValidationApp">

<head>
  <script src="https://code.angularjs.org/1.4.0-beta.2/angular.js" data-semver="1.4.0-beta.2" data-require="angular.js@1.4.0-beta.2"></script>
  <link rel="stylesheet" href="style.css" />
  <script src="script.js"></script>
</head>

<body ng-controller="controllers.root">
  <form name="superform" novalidate>
    <input name="title" ng-model="superObject.title" />
    <br/>
    <input name="description" ng-model="superObject.description" />
    <br/>
    <input type="reset" />
    <button ng-click="go()">go!</button>
  </form>
</body>

</html>