【发布时间】:2016-08-03 21:49:20
【问题描述】:
我有一个 html 表单,我正在使用 Angular js 为 from 中的每个输入添加验证。
但我不想在加载 html 时显示验证错误,直到用户对表单进行一些更改。
所以我的验证如下:
<form name="addApplicationForm" accept-charset="UTF-8" novalidate>
<input type="text" name="name" ng-model="applicationData.application_name" required>
<div ng-show="addApplicationForm.name.$invalid && !addApplicationForm.name.$pristine">
<span class="error" ng-show="addApplicationForm.name.$error.required">Please enter application name.</span>
</div>
<button ng-click="submit()">Submit</button>
</form>
这个表格按我的预期工作。现在,如果用户直接单击提交按钮而不对输入进行任何更改,则 $pristine 状态仍然为真,并且现在会显示错误。但在这里我想向用户显示验证错误。
这就是为什么在提交时,我想将表单的 $pristine 状态设置为 false,但我没有看到它的方法。
我也尝试过使用 $dirty 而不是 $pristine 之类的:
<form name="addApplicationForm" accept-charset="UTF-8" novalidate>
<input type="text" name="name" ng-model="applicationData.application_name" required>
<div ng-show="addApplicationForm.name.$invalid && !addApplicationForm.name.$dirty">
<span class="error" ng-show="addApplicationForm.name.$error.required">Please enter application name.</span>
</div>
<button ng-click="submit()">Submit</button>
</form>
在提交时,我只是调用 setDirty 方法使表单变脏,因此它会在提交按钮单击时显示错误。
但这里的问题是,我在表单中也有一个重置按钮。单击后,我想清除表单的所有字段,然后我需要将表单的脏标志设置为 false,但我没有任何此类选项。但是对于这种情况,如果我使用 $pristine 我有 $setPristine()。
所以在这种情况下,无论我使用 $dirty 还是 $pristine,我都有一个问题。
请告诉我有什么解决办法。
【问题讨论】:
-
如果答案不够,请在提交和重置按钮中提供最小的工作 sn-p。
标签: angularjs forms validation