準・究極の選択

さきほどのNO.1508009(チェックに応じて違うチェックボックスをアクティブにしたい)の件で、
HTMLファイルへのチェックボックス配置目的がPHPによる検索フォームとして利用することですが、
PHP側でSQLを発行するための配列の参照先にもなってしまっているため、実際のHTMLソースでは

<INPUT TYPE="CHECKBOX" NAME="fruit" value="りんご">[a] りんご
<INPUT TYPE="CHECKBOX" NAME="fruit" value="みかん">[b] みかん
<INPUT TYPE="CHECKBOX" NAME="fruit" value="ぶどう">[c] ぶどう
<INPUT TYPE="CHECKBOX" NAME="fruit" value="バナナ">[d] バナナ

でなく、

<INPUT TYPE="CHECKBOX" NAME="fruit[]" value="りんご">[a] りんご
<INPUT TYPE="CHECKBOX" NAME="fruit[]" value="みかん">[b] みかん
<INPUT TYPE="CHECKBOX" NAME="fruit[]" value="ぶどう">[c] ぶどう
<INPUT TYPE="CHECKBOX" NAME="fruit[]" value="バナナ">[d] バナナ

とかかれています(NAME属性内に[])。なのでjchさんにご提示いただいた

function check()
{
var v = document.kkk.food[0].checked;
for(var i=0; i<3; i++){
if(v) {
document.kkk.fruit[i].disabled = false
} else {
document.kkk.fruit[i].disabled= true;
}
}
document.kkk.fruit[3].disabled= true;
}

を使わせてもらおうとすると不整合を起こしてしまいます。

かといって、安直に以下のようにかくと構文エラーになってしまいます。

document.kkk.fruit[][i].disabled = false


ここでPHP側が使いたい配列表現を活かしつつ、jchさんのスクリプトも使いたい場合に
何かうまい書き方はありますでしょうか?

よろしくお願い致します。

A 回答 (1件)

ちょっといじってみました


----------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>Test</title>
<SCRIPT LANGUAGE="JavaScript">
<!--
function check(f,name){
var names=document.getElementsByName(name);
for(var i=0; i<names.length; i++){
names[i].disabled = !f.checked;
}
}

//-->
</SCRIPT>
</head>
<body>
<form id="Form1" name = "kkk">
<INPUT TYPE="CHECKBOX" NAME="food" value="果物" onclick="check(this,'fruit[]');">(1) 果物
<INPUT TYPE="CHECKBOX" NAME="food" value="野菜">(2) 野菜
<INPUT TYPE="CHECKBOX" NAME="food" value="肉魚">(3) 肉魚
<br>
<INPUT TYPE="CHECKBOX" NAME="fruit[]" value="りんご" DISABLED>[a] りんご
<INPUT TYPE="CHECKBOX" NAME="fruit[]" value="みかん" DISABLED>[b] みかん
<INPUT TYPE="CHECKBOX" NAME="fruit[]" value="ぶどう" DISABLED>[c] ぶどう
<INPUT TYPE="CHECKBOX" NAME="fruit[]" value="バナナ" DISABLED>[d] バナナ
</form>
</body>
</html>
    • good
    • 0
この回答へのお礼

BLUEPIXYさん、いつもお世話になっております。
早速適用させていただき、うまく動作できました。

説明不足で申し訳なかったですが、
(1)をクリックするとりんご、みかん、ぶどうが解除され、
バナナはずっとDISABLEDを維持したかったのですが、
for(var i=0; i<names.length; i++){

for(var i=0; i<3; i++){
としてみたら何とか思うとおりに動いてくれているようです。

どうもありがとうございました。

お礼日時:2005/07/13 09:35

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