ユーザーがリロード時に入力したデータを保持するFirefoxの機能に大きな問題があります F5。私が使用する場合 Ctrl+F5 フォームがクリアされ、これは素晴らしいです。私の問題は、これが入力クリーンアップを強制するために何をする必要があるかをすべてのユーザーが知っているわけではないということです。 Firefoxにデータをフォームに保持しないように指示する方法は、htmlまたは応答ヘッダーにありますか?
入力にautocomplete="off"
を追加するだけで、問題を解決できます。
<input type="text" autocomplete="off">
すべての入力とテキストエリアでこれを解決するjQuery
$('input,textarea').attr('autocomplete', 'off');
すべての入力を処理する代わりに、次のようにフォーム要素に属性を追加することもできます。
<form method="post" autocomplete="off">...</form>
しかし、上記のdomReadyの方法はうまくいきませんでした...
私はそれを行うより簡単で迅速な方法が
$('input,textarea').attr('autocomplete', 'off');
上記の短縮ソリューションを試しましたが、ページの選択ボックスの値がクリアされませんでした。
最終的に少し変更して、ページのすべての入力タイプがタイプに関係なくクリアされるようになりました。
var allInputs = $(":input");
$(allInputs).attr('autocomplete', 'off');
このため、onloadを実行するには、ready()メソッドに入れます。
$(document).ready(function () {
var allInputs = $(":input");
$(allInputs).attr('autocomplete', 'off');
});
/*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で呼び出します。
ブラウザーのオートコンプリート機能を保持する場合(他の有効な回答を参照)、name属性をフォームに追加して、ランダムな値を指定してみてください。それは私のために働いた:
<form id="my-form" name="<random-hash>">
...
</form>
私にとって唯一の修正は行うことでした
document.forms[0].reset();
上記の@Marekによるコメントで示唆されているように、ドキュメントの前にドキュメントの準備ができています-素晴らしいではありませんでしたが、私にとってはうまくいきました