下のようなソースなのですが、ラジオボタンのデフォルト値の扱いがうまくできません。
やりたいのは、CGIを最初に起動したときは「OFF」、
ラジオボタンを好きに設定変更してたとえば「ON」に変更した後、
「処理スタート」ボタンを押したり、F5キーで更新したりしても
自分で設定した「ON」が維持されているようにしたいです。
下のソースのように、"off"の方に「Checked」をつけると
ボタンを押したり更新するたびに「OFF」に戻ってしまいます。
その他いろいろやってみたのですが、うまくいきません。
どうしたら上記のようなことができるでしょうか?
ブラウザはIE8です。
use CGI qw(param);
$AutoMode = param('AutoMode');
if( $AutoMode eq "" ){
$AutoMode = "off";
}
print <<HTML1;
<html>
<body>
<form name="test" action="radio.cgi" method="post">
<input type="radio" name="AutoMode" value="off" Checked> 自動モード OFF<br>
<input type="radio" name="AutoMode" value="on"> 自動モード ON<br>
<br>
<input type="submit" value="処理スタート"><br>
</form>
</body>
</html>
HTML1
exit;
# こーいぅーことですか?
#!/usr/local/bin/perl
use strict;
use warnings;
use CGI qw(param);
my $AutoMode = param('AutoMode');
my $OffMode;
if( $AutoMode eq "on" ){
$AutoMode = "checked";
} else {
$OffMode = "checked";
}
print "Content-type:text/html\n\n";
print <<HTML1;</p>
<html>
<body>
<form name="test" action="hatena.cgi" method="post">
<input type="radio" name="AutoMode" value="off" $OffMode> 自動モード OFF
<input type="radio" name="AutoMode" value="on" $AutoMode> 自動モード ON
<input type="submit" value="処理スタート">
</form>
</body>
</html>
HTML1
exit;
# こーいぅーことですか?
#!/usr/local/bin/perl
use strict;
use warnings;
use CGI qw(param);
my $AutoMode = param('AutoMode');
my $OffMode;
if( $AutoMode eq "on" ){
$AutoMode = "checked";
} else {
$OffMode = "checked";
}
print "Content-type:text/html\n\n";
print <<HTML1;</p>
<html>
<body>
<form name="test" action="hatena.cgi" method="post">
<input type="radio" name="AutoMode" value="off" $OffMode> 自動モード OFF
<input type="radio" name="AutoMode" value="on" $AutoMode> 自動モード ON
<input type="submit" value="処理スタート">
</form>
</body>
</html>
HTML1
exit;
ありがとうございます。
そういうことです!
私のやりたかったことは、shintaboさんの書いてくれたソースでほぼできました。
(似たことを自分でもやったつもりだったのですが、そのときは、なぜかうまくいきませんでした。
変数をmy宣言しなかったからかな?)
「自動モードON」を選択。「処理スタート」を押す前に、F5キーで更新。
とすると「自動モードOFF」に戻ってしまいますが、これはしょうがないですかね?
> 「自動モードON」を選択。「処理スタート」を押す前に、F5キーで更新。
>
> とすると「自動モードOFF」に戻ってしまいますが、これはしょうがないですかね?
それは、Cookieとか使わないとダメです。
radioのonclickで、
document.cookie = "xxx";
して、
cgi側で、$cgi = CGI->new(); $cgi->cookie(xxx)で分岐する
とか、
もしくは、onclickでsubmitしちゃうのもアリですね。
重ね重ね、ありがとうございます。
あれはクッキーを使っているのですね。
onclickでsubmitは仕様上まずいので、
教えてもらった方法でクッキーに挑戦してみます。
ありがとうございます。
そういうことです!
私のやりたかったことは、shintaboさんの書いてくれたソースでほぼできました。
(似たことを自分でもやったつもりだったのですが、そのときは、なぜかうまくいきませんでした。
変数をmy宣言しなかったからかな?)
「自動モードON」を選択。「処理スタート」を押す前に、F5キーで更新。
とすると「自動モードOFF」に戻ってしまいますが、これはしょうがないですかね?