• ベストアンサー

チェックボックスのチェック方法

チェックボックスのチェック方法でつまずいています。 以前の質問を参考にここまで作りましたがどうしても解決しないので 教えてください checkboxはPHP側でDBより取得したデータを表示するため件数分作成します 検索ボタンで表示した件数を絞り込むことを可能にしています 表示件数が20や10や5等は問題なくチェックされますが 表示件数が1の場合 elの戻り値が"undefined"になりうまく動作しません ほかの場合はelの戻り値は表示件数分になっています <form name=frm method=post action=/beta/index.php> <input type=checkbox name=sebchk[] value=1112236589> <input type=checkbox name=sebchk[] value=1112236590> <input type=submit name=sub_srch value=検 索> <input type=submit name=sub_kan value=実行 onClick="return chk_kan();"> <script language="JavaScript"> <!-- function chk_kan(n) { var sebchk_ok = 0; var el; var i; el = document.frm.elements['sebchk[]']; if ( typeof el == "undefined") { alert('該当データがありません。'); return false; } for (i = 0; i < el.length; i++) { if (el[i].checked == true) { sebchk_ok = 1; } } if (sebchk_ok == 0) { alert('チェック項目が未選択です。'); return false; } /* proceed ? */ if (confirm('処理を行います。\nよろしいですか?')) { return true; } return false; } //--> </script> 解りづらいとは思いますが宜しくお願いします

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

とりあえず名前からオブジェクトを作ろうとせずに、forで formのデータをさらって、名前をヒットさせた方が汎用的になります 余談ですがフォームの送信をとめたいならonSubmitの方がよろしく ないでしょうか? 元ソースだと指定していない引数を渡していたり結構バグバグした 感じなので、できるだけ質問をする前にチェックしていただけると 助かるのですが・・・。 <script language="JavaScript"> function chk_kan(f) { var sebchk_bad = true; for (var i=0; i< f.length; i++) { if (f[i].name=="sebchk[]" && f[i].checked) sebchk_ok = false; } if (sebchk_bad) { alert('チェック項目が未選択です。'); return false; } if (confirm('処理を行います。\nよろしいですか?')) { return true; } return false; } </script> <form name="frm" method="post" action="/beta/index.php" onSubmit="return chk_kan(this);"> <input type="checkbox" name="sebchk[]" value="1112236589"> <input type="checkbox" name="sebchk[]" value="1112236590"> <input type="submit" name="sub_kan" value="実行">

morizoukun
質問者

お礼

無事動くようになりました アドバイスありがとうございました

morizoukun
質問者

補足

お返事ありがとうございます。 指定していない引数は質問する前にいろいろ試したままのを貼り付けていました。今後はチェックしてから質問したいと思います 回答の通りにして無事動作しましたが画面上にもう一つボタンがある場合はどのようにすればいいのですか 教えてください。 <input type=submit name=sub_srch value=検 索> 今の状態で検索ボタンを押すとチェック項目が見選択ですが表示されます 宜しくお願いします

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

これって仕様はsub_srchの値をみて、検索と実行をきりわけているのですよね? たとえば以下の感じで、直接ながしてやったらどうですか? <input type="submit" name="sub_srch" value="検索" onClick="location.href='/beta/index.php?sub_srch=1'">

morizoukun
質問者

補足

たびたびすみません。 説明不足でした。 最終的にはネットショッピングみたいな画面にしたいのですが 商品を絞り込むときに検索ボタンを押して該当するものを表示して ほしいものにチェックボックスでチェックを付けて実行ボタンで確定するようにしたいのですが sub_srchの値をみて検索と実行をきりわけるようには考えていません。 きりわけてするのは無理でしょうか 宜しくお願いします

noname#23734
noname#23734
回答No.1

elの扱いが変わるからですね。 こんなテストをすると良く解るとおもいます。 window.onload=function(){ alert(document.forms[0].elements['sebchk[]'].length) alert(document.forms[0].elements['sebchk[]'].value) alert(document.forms[0].elements['sebchk[]'][0].value) alert(document.forms[0].elements['sebchk1[]'].length) alert(document.forms[0].elements['sebchk1[]'].value) alert(document.forms[0].elements['sebchk1[]'][0].value) } <FORM> <input type=checkbox name=sebchk[] value=1112236589> <input type=checkbox name=sebchk[] value=1112236590> <input type=checkbox name=sebchk1[] value=1112236590> </form> el.length == undefinedでforを入れたり入れなかったりと処理を変えれば取りあえず動くと思いますよ。

morizoukun
質問者

お礼

返事遅くなりました とても参考になりました

関連するQ&A