AngularJs では、すべてのモデルを空のオブジェクトに設定してフォームを「リセット」しようとすると、入力がtype="email"
これである場合はクリアされないようです。type="text"
ただし、変更すると機能しますが、検証時に赤い境界線が失われます。
メールタイプの入力をリセットまたはクリアする方法はありますか?
ありがとう!
AngularJs では、すべてのモデルを空のオブジェクトに設定してフォームを「リセット」しようとすると、入力がtype="email"
これである場合はクリアされないようです。type="text"
ただし、変更すると機能しますが、検証時に赤い境界線が失われます。
メールタイプの入力をリセットまたはクリアする方法はありますか?
ありがとう!
記録のために、説明については OP コメントを参照し、デモについてはこのプランカーを参照してください。
私の場合、ng-disabled
ディレクティブを使用してスコープにバインドされた検証フォーム ボタンを使用する場合、二重のリセット ロジックを使用する必要がありました。
<form>
<input type="email" ng-model="formdata.email" />
<button class="btn btn-warning cancel" type="reset" ng-click="formdata = {}">Clear</button>
<button type="submit" ng-disabled="form.$invalid" />
</form>
type="reset"
: 無効な電子メールが現在フィールドに入力されている場合でもフィールドをクリアするため (この属性がないと、無効な電子メールは によって削除されませんng-click
)
ng-click="formdata = {}"
: すべてのスコープ バインディングを再初期化します。それがないと、フォームをリセットするときに ng-disabled が更新されず、リセット後も検証ボタンが有効になります...
その理由は、メール フィールドが有効になるまで、モデルがまだバインドされていないためです。そのmyModel = {}
ため、テキスト フィールドは無効な電子メールを保持しています。ただし、myModel.Email = ''
これを行うと、テキストフィールドが消去されます