• ベストアンサー

入力項目を残したいのですが・・・

PerlでCGIを作成しております。 フォームによる申込みページの作成過程における必須項目チェックの後処理で悩んでいます。 チェック自体は簡単に行えるのですが、その結果NGだった項目に関してアラートページを表示し、前ページに戻って該当部分の再入力をさせたいと思います。 ところが戻ると全ての項目が白紙に戻っています。(当たり前なのでしょうが・・・) 回避する手段として一時ファイルに入力項目をしたためておいてそれを書き戻す等考えてみたのですが、どうもスマートでない気がします。 検索ページや書籍でいろいろ調べてみましたが良い代替案が見つかりません。 もし定番の方法をご存じでしたら教えて頂けないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • inoue64
  • ベストアンサー率29% (334/1115)
回答No.3

>アラートページを表示し、前ページに戻って該当部分の再入力 チェックするCGIの出力を次のようにしたらどうでしょうか。 ----------- エラーです ○○を再入力してください。 すべてまたはエラー項目の入力フォーム (送信されたデータが入っている) 送信ボタン リセットボタン -----------

natural
質問者

お礼

貴重な案有り難うございます。 なるほど!これならアラートページを少々改造すれば綺麗に収まりそうです。 早速試してみたいと思います。

その他の回答 (2)

  • duckling
  • ベストアンサー率47% (88/185)
回答No.2

JavaScript:history.back() で、戻ったらダメですか? 普通の場合は、ボタンやハイパーリンクを使って JavaScript で戻ります。 そうじゃない場合は、 「ブラウザの戻るボタンで戻って下さい」という表示を出します。

natural
質問者

お礼

ご回答有り難うございます。 実はa-kumaさんへのお礼でも書きましたがPerlで何とか、と思っております。 というのもJavaScriptは無効にされてたら思った動作にならないからというのが念頭にあるからなのです。 でもこれは一般的な考え方じゃないんでしょうか? 一抹の不安が・・・。(^_^;

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

ブラウザの「戻る」をしてもらえれば良いんですよね。 そのアラートページに「再入力してね」と書いて、 onClick="history.back()" なボタンを置いておくとか、 onLoad="history.back()" なページにしてしまうとか。 # 安直? 正攻法は申し込みページ自体を CGI で出力するようにして おいて、たまたま最初に表示されるときが初期値がブランクで ある、というような形にしておいて、チェックの CGI でも 同じコードを使う、ということになるでしょう。

natural
質問者

お礼

早速のご回答有り難うございます。 なるほど、JavaScriptを使うのが有効なのですね。 ただ今回は出来るだけPerlでやってみたいと思っておりますので「正攻法」の方にチャレンジしてみようかと思います。 有り難うございました。

関連するQ&A