16

テキスト ボックス フィールドと非表示フィールドの両方を含む ASP.Net Web フォームがあります。隠しフィールドの値は、クライアント側の JavaScript を使用して動的に変更されます。フォームの投稿、値の検査、別のページへのリダイレクトはすべて期待どおりに機能しています。

ただし、ブラウザーの [戻る] ボタンを使用して前のページを表示すると、すべてのフォーム フィールドに投稿された値がまだ入力されていることがわかります。

IE と Firefox では、これはテキストと非表示の入力フィールドの両方に当てはまります。

Chrome では、これはテキスト フィールドの場合のみです。非表示フィールドの値は失われます。

ブラウザの履歴をナビゲートするときに、Chrome が動的に設定された非表示のフォーム フィールド値を再入力しないというのは本当ですか?

問題を示すために小さなサンプルをまとめました。必要に応じて提供できます。最初に質問をして、これがよく知られている動作であり、受け入れなければならないものかどうかを確認したかった.

4

3 に答える 3

19

この問題は、ちょっとしたコツで解決できます。

問題は、動的に設定された値を持つ Type=hidden のフォーム フィールドが、Chrome ブラウザによって適切に処理されないことです。

したがって、解決策は、フィールドのタイプをテキストに変更し、他の方法を使用して表示されているテキスト ボックスを非表示にすることです。これは、DEV タグ ペアで非表示にすることを意図した値を持つすべてのテキスト ボックスを囲み、スタイルを display: none として割り当てることで実現できます。

すると、ページ上に非表示の値を持つテキスト ボックスが表示されなくなり、ブラウザーの JavaScript で適切に機能します。

<input type=hidden name=item_no value=00001>

<div style="display: none">
    <input type=text name=item_no value=00001>
</div>
于 2011-06-17T10:10:47.147 に答える
5

この動作に依存しないでください。ブラウザのバージョン間でも、ブラウザ間で異なります。この動作は、どの標準にも記載されていません。フィールドに特定の値を持たせたい場合は、Cookie を使用するか、ページの読み込み時に常にサーバーにリクエストを送信するか、ローカル ストレージなどの最新の方法を使用できます (ただし、広くサポートされているわけではありません)。

于 2010-10-26T17:17:19.757 に答える
0

コメントできないようです。担当者が低すぎるのかもしれませんが、これは言及することが重要だと感じました。

Operaでこの問題に遭遇したので、元に戻されていない隠しフィールドを回避する Sanesh Fernando のソリューションを借りました (Sanesh に感謝します)。しかし、私にとって問題の原因は、フォームフィールドが更新される前にJavascriptが起動することでした.

Cookie は別の言い方をすればそうですが、訪問者に Cookie の使用に関する同意を要求するというばかげた EU 指令は、私にとっては解決策ではありません。

于 2012-02-12T06:03:41.777 に答える