次のようなangularjsのメールフィールドを検証しようとしています:
<input type="email" ng-model="email" class="form-control" name="email" ng-required="true" placeholder="Email Address">
<span ng-show="loginForm.email.$touched && loginForm.email.$invalid">A valid email is required</span>
すべて期待どおりに機能しますが、ユーザーが「.」を入力すると「有効な電子メールが必要です」というエラー メッセージが表示されるため、ユーザー エクスペリエンスが低下します。ユーザーが入力を続けると非表示になります。メール@メールだから。は無効ですが、email@email.com は有効です。
問題は、ユーザーが入力を完了する前に検証が行われるのが速すぎることです。
$touched フラグを使用してこれを解決しようとしましたが、ユーザーが最初に電子メールを入力したときにのみ解決されます。メールを修正するために戻ったときに、「.」を入力するとエラー メッセージが点滅することになります。またはドメイン名の「-」。
誰かがこれを何とか解決しましたか?