85

次のコードを含む Web ページをリロードしています。

<label for="showimage">Show Image</label>
<input id="showimage" name="showimage" type="checkbox" value="1" />

ページをリロードするたびに HTML がブラウザに送信されたままになる場合でも、リロードが実行されると、チェックボックスは常にチェックされた値になります。つまり、ユーザーがチェックボックスをオンにしてリロードしても、チェックボックスはオンのままです。

ここでキャッシングが行われていますか?

編集:以下のゴードン・ベルのソリューションを試してみましたが、value="1" を削除した後でもこれがまだ起こっていることがわかりました。私が見逃している可能性のあるものは他にありますか?

<label for="showimage">Show Image</label> 
<input id="showimage" name="showimage" type="checkbox" /> 
4

9 に答える 9

177

autocomplete="off"ページのフォーム要素に追加します。欠点は、これが有効なXHTMLではないことですが、複雑なJavaScriptなしで問題を修正します。

于 2009-01-22T22:39:08.703 に答える
38

はい、キャッシングだと思います。たとえば、Firefoxでこの動作が見られます(価値があるため、Safariではありません:))。

CTRL- SHIFT-を使用してページをリロードし、(Firefox の場合) キャッシュをバイパスすることができRます。チェック値が保持されていないことがわかります (ただし、通常CTRL-Rはキャッシュから情報を取得します)。

編集:キャッシュ制御ヘッダーを設定して、Firefoxでこのサーバー側を無効にすることができました:

Cache-Control: no-store

これは、Firefox の「フォームの値を記憶する」機能を無効にしているようです。

于 2008-11-18T19:28:55.860 に答える
34

js で autocomplete="off" を設定することもうまく機能します。

たとえば、jquery を使用します。

$(":checkbox").attr("autocomplete", "off");
于 2009-07-14T04:03:51.177 に答える
1

これは Firefox の優れた機能です。何かを入力してページをリロードすると、テキストはテキスト領域に残ります。選択したその他の設定についても同様です。

残念ながら、SO (おそらく JS によってリセットされる) や IE のような愚かなブラウザーでは機能しません...

解決策を提案します。本当にそれを行う必要がある場合は、JS でフォ​​ームをリセットしてください。form.reset() が仕事をするかもしれません (リセット入力ボタンのように機能します)。

于 2008-11-18T21:04:41.640 に答える
0

ブラウザーのキャッシュが原因である可能性があります。あまり頻繁に変更されない静的な Web サイトには非常に便利ですが、動的な Web アプリケーションには非常に不利です。
ページの head セクションにある 2 つのメタ タグを試してみてください。2 番目のメタ タグは、「no-cache」メタ タグを認識しない古いブラウザー (IE5) 用であり、異なる場合でも同じ結果が生成されます。各要求はサーバーに送信されます。

<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Expires" CONTENT="-1">
于 2008-11-19T13:54:25.300 に答える
0

または、f5 の代わりに、アドレス バーで Enter キーを押します :)

于 2008-11-19T12:47:19.337 に答える
0

$("#showimage").prop("checked",false);

于 2017-05-15T07:25:18.337 に答える