- ベストアンサー
フォームのvalueを変更する方法
- perlでフォームのvalueを変更する方法を教えてください。
- perlではjavaScriptのinnerHTMLのような方法でテキストを変更することはできますか?
- javaScriptが有効でない場合でもフォームのvalueを変更する方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こんにちは。 Perlで書いてCGIとして動かしたいという事でしょうか? スマートじゃない気もしますが一応、こんな感じではどうですか。 ■test.cgi(この下の # から HEOF までファイルに書く) #!/usr/bin/perl #上はPerlへのパス #初期値 $num1 = 1; $num2 = 1; #リクエスト確認 if ($ENV{'REQUEST_METHOD'} eq "POST") { if ($ENV{'CONTENT_LENGTH'} > 51200) {} read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } elsif ($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; } #デコード実行 if ($buffer ne "") { @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $FORM{$name} = $value; } } #インクリメント if ($FORM{'data1'} ne "") {$num1 = $FORM{'data1'};} if ($FORM{'data2'} ne "") {$num2 = $FORM{'data2'};} if ($FORM{'button1'} eq "足す") { $num1 = $FORM{'data1'} + 1; } elsif ($FORM{'button2'} eq "足す") { $num2 = $FORM{'data2'} + 1; } #HTMLを出力 print "Content-type: text/html\n\n"; print <<"HEOF"; <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <form action="test.cgi" method="post"> <input type="text" name="data1" value="$num1"><input type="submit" name="button1" value="足す"> <br> $num2 <input type="hidden" name="data2" value="$num2"><input type="submit" name="button2" value="足す"> </form> </body> </html> HEOF
お礼
GX71さん、回答ありがとうございます。 if ($FORM{'button1'} eq "足す") で条件分岐させるところと<input type="text" name="data1" value="$num1">のnameをバッファとして使ってるところがとっても参考になりました。