web-dev-qa-db-ja.com

Firefoxはリロード時にフォームデータを保持します

ユーザーがリロード時に入力したデータを保持するFirefoxの機能に大きな問題があります F5。私が使用する場合 Ctrl+F5 フォームがクリアされ、これは素晴らしいです。私の問題は、これが入力クリーンアップを強制するために何をする必要があるかをすべてのユーザーが知っているわけではないということです。 Firefoxにデータをフォームに保持しないように指示する方法は、htmlまたは応答ヘッダーにありますか?

55
Andreas

入力にautocomplete="off"を追加するだけで、問題を解決できます。

<input type="text" autocomplete="off">

すべての入力とテキストエリアでこれを解決するjQuery

$('input,textarea').attr('autocomplete', 'off');
79
Andreas

すべての入力を処理する代わりに、次のようにフォーム要素に属性を追加することもできます。

<form method="post" autocomplete="off">...</form>

しかし、上記のdomReadyの方法はうまくいきませんでした...

14
Daniel G.

私はそれを行うより簡単で迅速な方法が

$('input,textarea').attr('autocomplete', 'off');
6
Konrad K.

上記の短縮ソリューションを試しましたが、ページの選択ボックスの値がクリアされませんでした。

最終的に少し変更して、ページのすべての入力タイプがタイプに関係なくクリアされるようになりました。

var allInputs = $(":input");
$(allInputs).attr('autocomplete', 'off');

このため、onloadを実行するには、ready()メソッドに入れます。

$(document).ready(function () {
    var allInputs = $(":input");
    $(allInputs).attr('autocomplete', 'off');
});
5
Todd Darnell
/*reset form elements (firefox saves it)*/

function resetElements()
{
     var inputs = document.querySelectorAll('input[type=text]');
     //you get the idea.....you can retrieve all inputs by tag name input
     for(var i = 0; i < inputs.length; i++) {
         document.getElementsByTagName('input')[i].value = "";
     }
     var textareas = document.getElementsByTagName('textarea');
     for(var i = 0; i < textareas.length; i++) {
         document.getElementsByTagName('textarea')[i].value = "";
     }
}

この関数をonloadで呼び出します。

5
www139

ブラウザーのオートコンプリート機能を保持する場合(他の有効な回答を参照)、name属性をフォームに追加して、ランダムな値を指定してみてください。それは私のために働いた:

<form id="my-form" name="<random-hash>">
...
</form>
2
Felix

私にとって唯一の修正は行うことでした

document.forms[0].reset();

上記の@Marekによるコメントで示唆されているように、ドキュメントの前にドキュメントの準備ができています-素晴らしいではありませんでしたが、私にとってはうまくいきました

0
jonnybradley