重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

を配置した場合
受け取ったPerlは
その2つのどちらが押されたかを知ることができるのでしょうか?
その場合どうしたら言いのでしょうか?

<form method='post' action='http://perl/x.pl'>
<input type='submit'/><br/>
<input type='submit'/><br/>
<input type='text' name='data'/>
</form>

で第1のサブミットが押されたときには
dataを大文字で表示し
第2のサブミットが押されたときには
dataを小文字で表示したいのです

A 回答 (1件)

Web屋です。

OkWebの様なサイトを設計, 構築する仕事をしています。


はい。2つ以上のsubmitボタンを設置して、どちらのボタンが押されたか。
関知させる事ができます。

ポイントは、name="" と value="" を指定する事です。
2つ以上のsubmitボタンを設置する場合、value="" の内容はそれぞれ違うと思うので、name="" を指定するのだ。
と言う事を覚えておけば良いでしょう。

CGI側でパラメータを受け取る時、submitボタンに付けた name についても
取得して、その内容が value で指定した内容と同じかどうかを確認する事で、
どちらのボタンが押されたのかを確認する事が可能です。

具体的には、

HTML :

<form method="post" action="http://perl/x.pl">
<input type="submit" name="sbt" value="大文字" /><br />
<input type="submit" name="sbt" value="小文字" /><br />
<input type="text" name="data" />
</form>

Perl :

use CGI;
$cgi = new CGI;
$in{'sbt'} = $cgi->param('sbt');
$in{'data'} = $cgi->param('data');

if ($in{'sbt'} eq "大文字") {
# 大文字ボタンが押された時の処理
}
elsif ($in{'sbt'} eq "小文字") {
# 小文字ボタンが押された時の処理
}
exit(0);

こんな感じになります。

value に日本語など、多バイト文字を用いる場合には、
HTMLでの表示時の文字コードと、CGI側の文字コードが揃っていないと、
正しく認識されません。
HTMLも、CGIも、文字コードとして日本語EUCを利用して居れば、問題が発生する事は無いと思います。

また、HTMLの文法では、クオートはシングルクォーテーションではなく、ダブルクォーテーションを利用する事になっています。

不明点があれば、再度質問してください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!