単一ページアプリの「パスワードのリセット」ルートにアクセスしてChromeブラウザコンソールを見ると、次の警告が表示されます。
[DOM]パスワードフォームには、アクセシビリティのために(オプションで非表示の)ユーザー名フィールドが必要です:(詳細: goo.gl/9p2vKq )
助けになるのは、問題のフォームのhtmlもコンソールの次の行に出力されることです。そして、非常に明確に非表示のユーザー名フィールドが含まれています:
<form data-ember-action data-ember-action-436="436">
<div class="form-group">
<label for="newpasswordone">Password</label>
<input type="password" autocomplete="new-password" placeholder="Enter your new password" id="ember437" class="form-control ember-text-field ember-view" data-op-id="0">
<label for="newpasswordtwo">Password (again)</label>
<input type="password" autocomplete="new-password" placeholder="Re-enter your new password" id="ember438" class="form-control ember-text-field ember-view" data-op-id="1">
<input type="hidden" name="username" autocomplete="username" value="a_b">
</div>
<button disabled type="submit" class="btn btn-default">Reset password</button>
</form>
警告に影響を与えずに、ユーザー名フィールドを非表示にし、読み取り専用としてマークし、div
の外側に移動するなど、いくつかの小さなバリエーションを試しました。どのようにChrome=はユーザー名の提供を期待しますか?
Chrome 63および64で問題が発生します。
同じ問題がありました。少し掘り下げてみると、input
型のtext
要素である必要があることがわかりました。 「オプションで非表示」とは、CSSで非表示にできることを意味します。
input
またはemail
という名前のusername
を追加した場合、chromeはinput
要素という別の警告を表示しますオートコンプリート属性が必要です。だから、これは私がこれらのエラーを修正するために思いついたものです:
<input type="text" name="email" value="..." autocomplete="username email" style="display: none;">
。
実際のユーザー名または電子メールを要素のvalue属性に手動でレンダリングする必要があります。
また、インラインスタイルはあまり良い方法ではないことに注意してください。