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

このQ&Aのポイント
  • PHPとJSで同じNAME属性を使いたい場合、HTMLファイルのチェックボックス配置を配列形式にする必要があります。
  • 配列形式のチェックボックスを使うためには、PHPとJSの両方で適切な記述を行う必要があります。
  • PHP側が使いたい配列表現を活かしつつ、JSのスクリプトも使う方法があります。
回答を見る
  • ベストアンサー

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

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.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>

litton101
質問者

お礼

BLUEPIXYさん、いつもお世話になっております。 早速適用させていただき、うまく動作できました。 説明不足で申し訳なかったですが、 (1)をクリックするとりんご、みかん、ぶどうが解除され、 バナナはずっとDISABLEDを維持したかったのですが、 for(var i=0; i<names.length; i++){ を for(var i=0; i<3; i++){ としてみたら何とか思うとおりに動いてくれているようです。 どうもありがとうございました。

関連するQ&A

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

    次のHTMLのように、大分類、小分類のような構成のチェックボックス グループがあります(初期設定は全部チェック無しです) 普段は[a][b][c][d]をdisableとしておき、(1) にチェックが入った 場合に[d]以外([a][b][c])アクティブ(?とにかくチェックを入れる ことができる)ようにするにはどうしたらいいでしょうか。 よろしくお願い致します。 <form id="Form1"> : <INPUT TYPE="CHECKBOX" NAME="food" value="果物">(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>

  • 検索後にチェックボックスの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
  • チェックボックスグループの一部のボックスだけを常に無効化したい

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

    • ベストアンサー
    • HTML
  • formの配列をjsでカウントしたい

    お疲れ様です。 PHPで処理する用に <input type="checkbox" name="array[]" val="11111" />チェック1 <input type="checkbox" name="array[]" val="22222" />チェック2 <input type="checkbox" name="array[]" val="33333" />チェック3 とnameを配列にしておき、submitされたときに、 チェックされた項目のみをカウントして○件チェックされました。 とポップアップするようなスクリプトを書きたいのですが、 document.MyForm.array.value <-普通のテキストならこう書きますが、 配列の場合はどうかいたらよいのでしょうか? http://ml.php.gr.jp/pipermail/php-users/2005-August/027043.html のdocument.form1.elements[i]や document.forms['MyForm'].elements['str[1]'].value などの書き方も試してみましたが、 undefinedになってしまいます。 PHP側はいまあるままいじりたくないので、form内のname属性はそのままにしたいです。 このような場合、どう書けばチェックされたものだけをカウントすることができるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • 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
  • PHP 配列の並べ替え

    phpでの配列操作に関して質問です。 配列 $fruit[]の中に [0]→{[name]りんご,[value]5} [1]→{[name]みかん,[value]6} [2]→{[name]メロン,[value]0} [3]→{[name]いちご,[value]1} [4]→{[name]ぶどう,[value]5} このようなデータが入っていたとして、 [value]の大きい順に並べ替えをしたいのですが、 どのような方法を行えば良いのでしょうか? 多分とても基礎的な問題だと思うのですが、 どうしても良い方法が思いつかないので、 どうぞ宜しくお願いします。

    • ベストアンサー
    • PHP
  • CHECKBOXとTEXTBOXのnameが同じ場合

    下記のようにチェックボックス名とテキストボックス名が同じ場合、エラーになりますが、これをjavascriptのみでうまく処理できる方法はないでしょうか。 #nameは同じまま。 #cgiを経由せず。 #下記と同じことをやりたいわけではありません。単に簡単にしたサンプルです。 <form name="main"> <INPUT TYPE="CHECKBOX" NAME="address" VALUE="東京">東京<BR> <INPUT TYPE="CHECKBOX" NAME="address" VALUE="大阪">大阪<BR> <INPUT TYPE="CHECKBOX" NAME="address" VALUE="その他" onclick="document.main.address.value = 'その他だよ'">その他<BR> <INPUT TYPE="text" NAME="address" SIZE="20"> </form>

  • ラジオボタンとプルダウンを連動させたい

    ラジオボタンとプルダウンを連動させたい いつもお世話になっております。 ラジオボタンのvalue値に連動してプルダウンの内容が変わるということがしたいと思い、 数日前からいろいろと格闘していましたが、煮詰まったため相談に伺いました。 http://okwave.jp/qa/q2928590.htmlのANo.2の回答 -------------------------------------------------------------------- <script language="javascript"> function changeFunc(obj){ var v=obj.value; var f=obj.form; for(var i=0;i<f.length;i++){ if(f[i].type=="checkbox"){ if(f[i].className==v || v=="") f[i].disabled=false; else f[i].disabled=true; } } } </script> <form> <select name="genre" onChange="changeFunc(this)"> <option value="">食べ物</option> <option value="grain">穀物</option> <option value="fruit">果物</option> <option value="meat">生き物</option> </select> <br /> <input type="checkbox" value="お米" class="grain">お米<br /> <input type="checkbox" value="そば" class="grain">そば<br /> <input type="checkbox" value="りんご" class="fruit">りんご<br /> <input type="checkbox" value="みかん" class="fruit">みかん<br /> <input type="checkbox" value="さかな" class="meat">さかな<br /> <input type="checkbox" value="豚肉" class="meat">豚肉 </form> -------------------------------------------------------------------- を参考にいろいろと試してはみたのですが、こちらは「プルダウン→チェックボックス」で、 まったく逆でどうしたら良いのかまったくわかりませんでした。 他のウェブサイトの情報やサンプルも試したのですが、value値やname値他の問題でうまくできませんでした。 希望の仕様は ・ラジオボタンの選択肢によって、プルダウン(セレクトボックス)の内容が変わる(アイテムが消える、または選択できなくなる)。 ・ラジオボタン・プルダウン共にvalue値・name値は決まったものがある(プルダウンのvalue値は日本語) 以上です。 javascriptは素人ですので、わかりにくい質問になっているかもしれないのですが、お力を貸していただけましたら助かります。 よろしくお願いします。

  • リンク風sabmitのformをまとめられますか?

    フォームの送信を、リンク風に表示しているのですが、 複数ある場合、フォームタグをまとめることはできるのでしょうか? 下記にHTMLを記載しております。 <form name="word1" method="POST" action="word.php"> <input type="hidden" name="fruit" value="みかん"> </form> <form name="word2" method="POST" action="word.php"> <input type="hidden" name="fruit" value="りんご"> </form>    ・    ・    ・    ・ <form name="word100" method="POST" action="word.php"> <input type="hidden" name="fruit" value="ぶどう"> </form> <a href="javascript:document.word1.submit()">みかん</a> <a href="javascript:document.word2.submit()">りんご</a>    ・    ・    ・    ・ <a href="javascript:document.word100.submit()">ぶどう</a> と、1つ1つ書いていて長すぎると思っていたのですが まとめることは可能なのでしょうか? また、可能であれば、javascript等の知識が必要となるのでしょうか? ご教授宜しくお願い致します。

  • javascriptでチェックボックスの選択状況をチェックする方法につ

    javascriptでチェックボックスの選択状況をチェックする方法について質問です。 チェックボックスを <input type="checkbox" name="chk[]" value="1"> <input type="checkbox" name="chk[]" value="2"> のようにした場合、チェックボックスが1か所以上選択されているかどうかは、 var count = 0; for (var i=0;i<document.myform.elements['chk[]'].length;i++){ if(document.myform.elements['chk[]'][i].checked){ count++; } } if(count==0){ window.alert("チェックしてください!"); } のようにすればチェック可能ですが、inputタグで <input type="checkbox" name="chk1[]" value="1"> <input type="checkbox" name="chk1[]" value="2"> <input type="checkbox" name="chk2[]" value="A"> <input type="checkbox" name="chk2[]" value="B"> のように「name」の配列名が変化する場合はどのようにすればチェック可能でしょうか?

専門家に質問してみよう