あくまで#1のやり方にこだわるやり方。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS">
<script type="text/javascript">
<!--
function limitation(f,limit){
var c=0;
var setValue="";
for(var i=0;i<f.length;i++){
if(f.elements[i].checked){
c++;//現在のチェックされている数を数える
setValue+=f.elements[i].name + "=" + f.elements[i].value + ";";
}
}
if(c>limit){
alert("チェックできる数を超えています!");
return false; //制限数を超えていたら無かったことにする
} else {
document.forms["SEND"].elements[f.name].value=setValue;
return true;
}
}
//-->
</script>
<title>チェックボックスのチェック数の制限</title>
</head>
<body>
<form name="form1">
2つまでチェックできます。<br>
A<INPUT type="checkbox" name="check1" value="A" onclick="return limitation(this.form,2)"><br>
B<INPUT type="checkbox" name="check2" value="B" onclick="return limitation(this.form,2)"><br>
C<INPUT type="checkbox" name="check3" value="C" onclick="return limitation(this.form,2)"><br>
D<INPUT type="checkbox" name="check4" value="D" onclick="return limitation(this.form,2)"><br>
</form>
<form name="form2">
3つまでチェックできます。<br>
A<INPUT type="checkbox" name="check1" value="A" onclick="return limitation(this.form,3)"><br>
B<INPUT type="checkbox" name="check2" value="B" onclick="return limitation(this.form,3)"><br>
C<INPUT type="checkbox" name="check3" value="C" onclick="return limitation(this.form,3)"><br>
D<INPUT type="checkbox" name="check4" value="D" onclick="return limitation(this.form,3)"><br>
E<INPUT type="checkbox" name="check5" value="E" onclick="return limitation(this.form,3)"><br>
</form>
<form name="SEND">
<input type="submit" action="send.cgi" method="POST" value="送信">
<input type="hidden" name="form1" value="">
<input type="hidden" name="form2" value="">
</form>
</body>
</html>
お礼
いろいろとありがとうございました。結局、教えて頂いたのに私が初心者のあまり上手く動かせない状態です。 前回教えていただいた @check1=param("check1"); $result1=join(',',@check1); の所に $query= new CGI; @check1 = $query->param('check1'); を入れて print "<td width=300><font size=2>$result1</font> </td>\n"; と書き出したら 「Internal Server Error」になりました。(属性は755) 同じく以下の方も「Internal Server Error」になりました。 if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); } else { $buf = $ENV{'QUERY_STRING'}; } を入れて print "<td width=300><font size=2>$rbuf</font> </td>\n"; と書き出す。