2

jqueryを使用して、入力がフォーカスされるとわずかにフェードし、ユーザーが入力すると完全に消える入力上のプレースホルダーテキストを作成しています。この部分は正常に動作します。したがって、保存されたテキストとの競合を避けるために、コードを次のようにラップしました。

if(!$($input).val()) {

...プレースホルダーの作成、フェードのルールの設定など...

}

ユーザーが Firefox などでパスワードを保存している場合、ブラウザーは入力に値があることを検出し、プレースホルダー テキストを作成しません。

ただし、Chrome では、ページの読み込みが「完了する」まで、Chrome は保存された値を読み込みません。つまり、入力が空であることを検出し、プレースホルダー テキストを作成し、ページが読み込まれた後、保存された値を配置します。入力の値 - プレースホルダーとパスワードが互いに重なっています。

この不幸な重複を避けるために、フォームに記入している Chrome を検出するにはどうすればよいですか?

4

3 に答える 3

2

最後に、自動入力時に Chrome が何らかのイベントをトリガーしないことに気付きましたが、window.load まで待ってから、入力に -webkit-autofill があるかどうかを確認すると、それらを確認できます。ご覧のとおり、デバウンサー (Ben Alman - http://benalman.com/projects/jquery-throttle-debounce-plugin/ ) を使用してさらに 200 ミリ秒待機しています。自動入力テキストをまだ入力していません...

$(window).load($.debounce(200, function () {

       if ($('input:-webkit-autofill')) {

           // We know that this form has autofill on its way. Let's check this again after a delay as its not always done on window.load

           $('input:-webkit-autofill').each(function () {

               if ($(this).val() !== "") {
                   $(this).parent().find('label').hide();
               }

           });

       }

    }));
于 2012-01-19T11:07:39.137 に答える
0

ブラウザに保存された情報を削除するにはautocomplete="off"、フォーム入力内で属性を使用できます。

于 2021-02-19T00:48:03.137 に答える