<form name=”myForm” action=”foo.php” method=”POST”>
<input type=”checkbox” name=”flag” value=”a”>
<input type=”checkbox” name=”flag” value=”b”>
<input type=”checkbox” name=”flag” value=”c”>
</form>
PHPについては、nameに[]を付けるとpost時に配列で返します。
<form name=”myForm” action=”foo.php” method=”POST”>
<input type=”checkbox” name=”flag[]” value=”a”>
<input type=”checkbox” name=”flag[]” value=”b”>
<input type=”checkbox” name=”flag[]” value=”c”>
<input type=”submit” name=”送信”>
</form>
<?
$flag = $_POST[”flag”];
foreach ($flag as $value){
echo $value;
}
?>
Javascriptはもう少し考えてみます。
myForm内の全ての部品数を取得するのなら、
<script>
<!--
document.write(document.myForm.elements.length);
-->
</script>
でできるんですが、これだとボタンとかいろいろ増えると
チェックボックスの数と断定できないですね・・・。
参考までに。
そうですね。この記述であればわかるんですが・・・
nameはflagからflag[]に変えて良いという前提で書きました。
以下のようなスクリプトでどうでしょう。
nameがflag[]のcheckboxが必ず2個以上ある場合、JavaScriptでのif文がシンプルになると思います。
(JavaScriptでは値が1つの場合、配列として扱われず、lengthが取得できません。)
もう少し上手い書き方もありそうですが、とりあえず動くはずです。
<html>
<head>
<title>checkboxのテスト</title>
<script language=”javascript”>
function arraySizeCheck() {
// 配列の大きさをチェック (チェックボックスの個数のチェック)
if (document.myForm.elements[’flag[]’]) {
if (document.myForm.elements[’flag[]’].length) {
alert(document.myForm.elements[’flag[]’].length+”個のチェックボックスがあります。”);
} else {
alert(”1個のチェックボックスがあります。”); // 配列のlengthがない -> 値が1つで配列ではない
}
} else {
alert(”チェックボックスが存在しません。”); // 配列自体がない
return false; // 以下の処理は行わない
}
// チェックされたcheckboxの数をチェック
if (document.myForm.elements[’flag[]’].length) {
count = 0;
for (var i=0;i<document.myForm.elements[’flag[]’].length;i++){
if ((document.myForm.elements[i].name==”flag[]”) && (document.myForm.elements[i].checked)) {
count ++;
}
}
alert(count+”個のチェックボックスがチェックされています。”); //
} else {
if (document.myForm.elements[’flag[]’].checked) {
alert(”1個のチェックボックスがチェックされています。”);
} else {
alert(”0個のチェックボックスがチェックされています。”);
}
}
}
</script>
</head>
<body>
<form name=”myForm” action=”<?php echo $_SERVER[PHP_SELF] ?>” method=”POST”>
<input type=”checkbox” name=”flag[]” value=”a”>
<input type=”checkbox” name=”flag[]” value=”b”>
<input type=”checkbox” name=”flag[]” value=”c”>
<input type=”checkbox” name=”flag[]” value=”d”>
<input type=”checkbox” name=”flag[]” value=”e”>
<input type=”submit” value=”test” onClick=”arraySizeCheck()”>
</form>
<?php
if ($_POST) {
for ( $i=0; $i < count($_POST[’flag’]) ; $i++ ) {
print $_POST[’flag’][$i] . ” がチェックされました。<br />”;
}
}
?>
</body>
</html>
できました。ありがとうございます。
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
1 | andi | 448回 | 409回 | 0回 | 2006-02-10 20:16:11 |
> Javascriptはもう少し考えてみます。
確かにこの方法だと、PHPでは取得できますが、JavaScriptで取得できないんですよね。
(なので質問した次第です。)