- ベストアンサー
戻るボタン使用時のフォーム内容クリアについて
- 簡易メール問い合わせフォームを作成しています。問い合わせ内容を記述後、submitしたら、CGIでメールを送信し、別のページへ飛ばしています。
- 送信完了ページから、元の問い合わせページへ「戻る」ボタン等を使用して戻った場合、input内に記述されたテキストがそのまま残っています。
- 戻るを押したときにフォームがクリアされていれば良いです。どうかよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ちょっと質問者の意図とは(別画面にしているので)違いますが、 このようにしてみたらどうでしょう。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS"> <title>送信後のフォームのクリア</title> <script type="text/javascript"><!-- var time_id=0; function clear(){ document.FORM1.reset(); clearTimeout(time_id); } //--> </script> </head> <body > <form name="FORM1" method="POST" action="mail.cgi" target="_blank" onsubmit="time_id=setTimeout('clear()',10);"> <input type="text" name="address" value=""> <input type="submit" value="送信"> </form> </body> </html>
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#2>試してみましたが、ダメでした。 ウチでIE6, Firefox1.5 で試してみたところでは、クリアできるようなんですが。 #2>onsubmitの前に、actionを実行しているようです(?) onsubmit の前にaction を実行すると言うことはありません。 する前にイベントが起こって実行されるので、(でないとイベントから送信をキャンセルできないことになるので) clear() をclearForm() にしてみるとか setTimeout('clear()',500); にしてみる(数字を大きくする)とか試して貰えますか? #2の要点は、送信完了の画面を別ウィンドウで表示する そして、元のウィンドウのフォームを時間を置いてクリアするというものです。
送信完了画面でブラウザの再読込ボタンを押すと、再送信するわけですが、、、 それはいいのでしょうか?
補足
送信完了画面は、別URLになっています。 再読み込みしても、再送信はしないようになっています。 問題は、そのHTMLから、元のフォームを含むHTMLへ戻った際のフォーム内容のクリアです。
- salf
- ベストアンサー率42% (27/64)
メール内容入力とメール送信の間にメール内容確認画面を入れて、 メール内容入力からメール内容確認への値の受け渡しを Session で行います。そして、メール送信完了画面にて Session の値をクリアします。 このような処理にすれば、メール内容確認画面の最初で Session 値をチェックすれば 連続投稿も不正アクセスも禁止することができます。 でもこの方法は簡単ではないですね...orz
お礼
試してみましたが、ダメでした。 submitする前に、フォーム内容をクリアしているようですが、うまくいきません。 onsubmitの前に、actionを実行しているようです(?) ありがとうございます。