私はhtml形式を使用しました。角度jを使用してfrom内の各入力に検証を追加します。Angular jsがPristine falseにフォームを設定しました
しかし、ユーザーがフォームに変更を加えるまで、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を使用する場合は、ここで1つの問題があります。
解決策を教えてください。
回答が不十分な場合は、送信ボタンとリセットボタンを最小限にしてください。 – zoom