20

AngularJS のシングル ページ アプリケーションで ng-submit を使用するときに、ブラウザーにユーザーにパスワードを覚えてもらうようにするにはどうすればよいですか。

私のフォーム:

<form action="/#/dashboard/login" onsubmit="return false;" ng-submit="login()" name="loginForm">
    <input type="text" required id="username" name="username" ng-model="username" autocomplete="on" placeholder="Username" value="">
    <input type="password" required id="password" name="password" ng-model="password" autocomplete="on" placeholder="Password" value="">
    <button type="submit" class="btn">Submit</button>
</form>

何か案は?


アップデート

ブラウザにフォームを認識させ、だましてパスワードを記憶させるアクションを追加しました。(これは明らかに機能しませんでした。) フォームはアクションなしで正常に機能します。は、アクションのonsubmit="return false;"実行を防ぎます。だけng-submitが何かをしています。

4

5 に答える 5

11

あなたのコードは問題ありませんが、次のように name 属性を入力フィールドに追加する必要があります。

<input type="text" name="username" ...>

<input type="password" name="password" ...>
于 2013-09-20T13:18:37.817 に答える
2

フォームの HTML は少しわかりにくいです。

<form action="/#/dashboard/login" onsubmit="return false;" ng-submit="login()" name="loginForm">

フォームが送信されたら、に移動しますか、/#/dashboard/loginそれとも実行しng-submit="login()"ますか? 現在、ng-submit は無視され、フォーム アクションが優先されます。新しいページとして移動する場合は、属性と属性を/#/dashboard/login削除するだけで、通常どおり機能します。ng-submitonsubmit

したい場合は、属性と属性ng-submit="login()"を削除します。Angular は、ng-submit を含むフォームに action 属性も含まれていない場合、フォームの送信を自動的に防ぎます。このようにすると、フォームが実際にはどこにも送信されないため、ブラウザーのパスワードの記憶プロンプトが停止します。これは、ブラウザがまだシングル ページ アプリケーションの時代に追いついていない領域だと思います。私が認識している直接的な修正方法はありません。actiononsubmit

回避策は、HTML に別の隠しフォームを用意し、ユーザーがメイン フォームに入力したものと同じユーザー名/パスワードを設定し、ng-submit が呼び出されると同時にその隠しフォームを iframe に送信することです。 -パスワードを保存するようにブラウザーにプロンプ​​トを表示するにはどうすればよいですか? をご覧ください。それを行う方法についてのアイデア。

于 2013-09-03T08:18:27.597 に答える
0

犯人は「return false;」です。オンサブミットで。それを削除すると、準備完了です。ng-submit は、フィールドで Enter キーを押したり、送信ボタンをクリックしたときに実際にフォームを送信しないなど、残りの処理を行います。

于 2013-09-03T08:07:31.680 に答える