Perl:CGI.pm:入力ボックスのクリア?
お世話になります。
下のサンプルコードは、CGI.pmのperldocに載っていたサンプルを改造したものです。
#! /usr/bin/perl
#
# simple.cgi -- CGIフォームの実験
use CGI qw/:standard/;
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
print
header( -expires=>'-1d',
-pragma => 'no-cache',
'Cache-Control' => 'no-cache'),
start_html('Simple Script'),
h1('Simple Script'),
start_form,
"What's your name? ",textfield(-name=>'name', -default=>""),p,
submit,
end_form,
hr,"\n";
if (param) {
print
"Your name is ",em(param('name')),p,
}
print end_html;
改造点はheader関数にexpires、pragma、Cache-Controlを入れてみたこと、
textfieldに-default=>""を入れてみたこと、
UIと表示項目を1つに減らしたことです。
やりたいのは、上のテキストボックスに名前を入れて、submitを押した瞬間に、上のtextboxをクリアすることです。
ぼくの理解では、最初に上記のCGIがあるURLにアクセスしたときにはプログラムは全部走ってしまう、paramがゼロだからそのときは入力表示を出すだけ、
実行を押した後もう一度このプログラムは最初から走る、paramに値があるから出力が表示される、というものです。
となれば、2度目に(入力を得て)実行されるときは、headerのcache関係の項目や、textfieldのdefaultが効いて空白になりそうな気がしますが、現実には最初に入った値がそのまま動き続けます。
これをPerl側で空白になるように制御できるでしょうか。
サーバーはFreeBSD(レンタル)、Perlは5.12、WebサーバーはApacheです。
クライアントはWindows7でIE9、Firefox22、Chrome28を使っています。
よろしくお願いします。
お礼
有難うございます。おかげ様で解決しました。