我有一個html窗體,我使用angular js爲每個輸入添加驗證。角js設置窗體到原始虛假
但我不想在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,但我沒有看到它的方法。
我也試圖與$髒的,而不是$質樸,如:
<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,我在這裏有一個問題。
請告訴我可能是什麼解決方案。
如果答案不夠,請在提交和重置按鈕中提供最少的工作片段。 – zoom