• ベストアンサー

チェックに応じて違うチェックボックスをアクティブにしたい

jchの回答

  • ベストアンサー
  • jch
  • ベストアンサー率38% (7/18)
回答No.2

<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() { 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; } function oncheck() { for(var i=0; i<4; i++){ document.kkk.fruit[i].checked= false; document.kkk.fruit[i].disabled= true; } for(var i=0; i<3; i++){ document.kkk.food[i].checked= false; } } //--> </SCRIPT> </head> <body onload="oncheck()"> <hr><p> <CENTER>タイムアウト発生</CENTER> <p> <form id="Form1" name = "kkk"> <INPUT TYPE="CHECKBOX" NAME="food" value="果物" onclick="check();">(1) 果物 <INPUT TYPE="CHECKBOX" NAME="food" value="野菜">(2) 野菜 <INPUT TYPE="CHECKBOX" NAME="food" value="肉魚">(3) 肉魚 <br> <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] バナナ </form></p> <hr> <p></p> </body> </html>

litton101
質問者

お礼

jchさん、ご教示ありがとうございました。 早速動作確認させていただいたところ、 まさに要望どおり完璧な動作です! スクリプトも整然としていて わたしでもよくわかりました。 本当に勉強になりました。

関連するQ&A

  • PHPとJSで同じNAME属性を使いたい場合の配列処理の記述

    さきほどの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さんのスクリプトも使いたい場合に 何かうまい書き方はありますでしょうか? よろしくお願い致します。

  • 検索後にチェックボックスのON/OFF状態を再現して表示したい

    下記の例で、表示されている sample.php にあるチェックボックスを ON/OFFしてから再計算ボタンを押下後、チェックボックスのON/OFF状態を 引き継いで(維持して)sample.phpを表示させることはできませんか? 「りんご」だけにチェックして再計算ボタンを押下後、再表示された sample.php は「りんご」だけチェックが入っているイメージです。 <form action="./sample.php" method="post"> <input type="checkbox" name="fruit[]" value="apple">りんご</td> <input type="checkbox" name="fruit[]" value="orange">みかん</td> <input type="checkbox" name="fruit[]" value="grape">ぶどう</td> <input type="submit" name="exec" value="再計算"> </form> なお、name="fruit[]" は配列になっていて、SQL発行に生かされています。

    • ベストアンサー
    • PHP
  • チェックボックス/ラジオボタン

    CGIを勉強中です。 まだ無料で配布されているCGIをカスタムするくらいしかできないレベルです。 今度やりたいのが、チェックボックス/ラジオボタンどじらでもいいのですが、 こちらに送られてくるメールフォームで選択されているものは仮に「Y」 選択されていないものは「N」という形で受け取りたい場合はどのように したらできるのでしょうか? よろしくお願いします。 <input type="checkbox" name="みかん" value="みかん" />みかん <input type="checkbox" name="りんご" value="りんご" />りんご <input type="checkbox" name="メロン" value="メロン" />メロン <input type="radio" name="みかん" value="みかん">みかん  <input type="radio" name="りんご" value="りんご">りんご

    • ベストアンサー
    • CGI
  • チェックボックスのチェックについて

    submit時に一つでもチェックがなければアラートを表示 チェックがあれば進む・・・としたいです。 <form action=next.html name=form1> <input type=checkbox name=checkbox1 value=1> <input type=checkbox name=checkbox2 value=2> <input type=checkbox name=checkbox3 value=3> <input type=checkbox name=checkbox4 value=4> <input type=checkbox name=checkbox5 value=5> ~以下50まで続きます <input type=submit value=submit> </form> function countChecked(form1) { var total = 0; var max = 50; for (var index = 0; index < form1.checkbox.length; index++) { total += form1.checkbox[index].checked ? 1 : 0; } if(countChecked(document.form1)) > 0) { return true; } else { alert("no"); return false; } return(total); } 過去に似たような質問を参考に作ってみましたがダメでした。 チェックボックスの名前の付け方が悪いのでしょうか。

  • チェックボックスグループの一部のボックスだけを常に無効化したい

    チェックボックスグループの一部のボックスだけを常に無効 (readonly、disabled)にする方法があればご教示ください。 たとえば、以下でみかんだけを無効にする、という具合です。 <INPUT TYPE="CHECKBOX" NAME="kudamono" value="りんご">りんご <INPUT TYPE="CHECKBOX" NAME="kudamono" value="みかん">みかん <INPUT TYPE="CHECKBOX" NAME="kudamono" value="なし">なし (もちろんJavascript、CSS可、IE6限定で動作すれば十分です。) よろしくお願い致します。

    • ベストアンサー
    • HTML
  • チェックボックスが1つ以上チェックされたかチェックしたい

    以下のフォームで、 p_cdのチェックボックスが1つ以上選択されたかチェックしたいのですが、良い方法ございますでしょうか? <form name='test'> <input type="hidden" name="p_name[]" value='xx'> <input type="checkbox" name="p_cd[]" value='1'> <input type="hidden" name="p_name[]" value='yy'> <input type="checkbox" name="p_cd[]" value='1'> </form>

  • チェックボックスのデータの受け取り方について

    以下のようなチェックボックスを作ったとき、 test.phpではどうやって受け取ればよいのでしょうか? nameがそれぞれ違う場合は分かるのですが... 教えてください。 <form method="POST" action="test.php"> <input type="checkbox" name="color" value="red">赤</input> <input type="checkbox" name="color" value="blue">青</input> <input type="checkbox" name="color" value="white">白</input> <input type="checkbox" name="color" value="black">黒</input> <input type="submit" value="送信" > </form>

    • ベストアンサー
    • PHP
  • チェックボックスの値に応じてPHP内でSQLを発行する方法

    HTML検索フォームにチェックボックスを複数設け、チェックが入ったら チェックされているもの同士をORで結んだものを、他の検索キーとANDで結ぶ SQL文を発行したいのですが。 これを効率的に行う方法を、以前に本掲示板でご教示いただきました。 <input type="checkbox" name="food[]" value="1">果物 <input type="checkbox" name="food[]" value="2">野菜 <input type="checkbox" name="food[]" value="3">肉類 if(is_array($_POST['food'])) { $sql .= " AND ("; $i=0; # 「or」 をつけるフラグ foreach($_POST['food'] AS $food_code) { if ($i) { $sql .= " OR "; } $sql .= "MYTABLE.MYFOOD = '$food_code'"; $i++; } $sql .=")"; } これを応用し、MySQLのMYTABLE.MYFOODに次のようなレコードが登録されているとして、 果物―みかん 野菜〔にんじん〕 野菜(キャベツ) 肉類【豚バラ】 果物~りんご  : これら先頭2文字を切り出して(あるいは「LIKE '肉類%'」のように、~で始まる、 でもいいです)真偽を評価したいです。 その際、果物と肉類にチェックが入ったと仮定して AND (SUBSTRING(MYTABLE.MYFOOD,1,4) = '果物' OR SUBSTRING(MYTABLE.MYFOOD,1,4) = '肉類') としてみたら、合致するものだけをうまく抽出できたのですが、 このようなロジックを冒頭のPHPコードに組み込むにはどう書いたらいいでしょうか? なお、果物5種類、野菜3種類、肉類7種類と、いずれも有限ですので、 SQL文をベタ書きすることは十分可能だと思っています。

    • ベストアンサー
    • PHP
  • チェックボックスの全選択

    <input type="checkbox" name="chk" value=1> <input type="checkbox" name="chk" value=2> <input type="checkbox" name="chk" value=3> <input type="checkbox" name="chk" value=4> <input type="checkbox" name="chk" value=5> このように同一名称のチェックボックスに対して ボタンを押下された時全てのチェックボックスを チェックするJavaScriptの 書き方を教えて貰えないでしょうか

  • 複数のチェックボックスをチェックしたい

    質問させてください。 複数のチェックボックスを項目別に全てチェックするようなjqueryの書き方をご教授いただきたいです。 <table> <tr> <td> <input type="checkbox" name="" />まとめてチェック </td> </tr> <tr> <td> <li><input type="checkbox" name="" value="" />a</li> <li><input type="checkbox" name="" value="" />b</li> <li><input type="checkbox" name="" value="" />c</li> <li><input type="checkbox" name="" value="" />d</li> </td> </tr> <tr> <td> <input type="checkbox" name="" />まとめてチェック </td> </tr> <tr> <td> <li><input type="checkbox" name="" value="" />e</li> <li><input type="checkbox" name="" value="" />f</li> <li><input type="checkbox" name="" value="" />g</li> <li><input type="checkbox" name="" value="" />h</li> </td> </tr> <tr> <td> <input type="checkbox" name="" />まとめてチェック </td> </tr> <tr> <td> <li><input type="checkbox" name="" value="" />i</li> <li><input type="checkbox" name="" value="" />j</li> <li><input type="checkbox" name="" value="" />k</li> <li><input type="checkbox" name="" value="" />l</li> </td> </tr> </table> 上記のようにそれぞれの項目に「まとめてチェック」のチェックボックスがあり、 そこに該当するチェック項目は全てチェックorチェックを外す っという挙動の実装を考えています。 jqueryでやりたいのですが、javascript、jqueryがかなり苦手でいまいちいきません。 ググって $(function(){ $('#all').click(function(){ if(this.checked){ $('#check input').attr('checked','checked'); }else{ $('#check input').removeAttr('checked'); } }); }); このソースを見つけたのですが、これだと一つの項目でしか実装できず 項目分このjqueryを書くのも余り良い書き方だと思えません。 どなたか、ご教授お願いいたします。