・ラジオボタン「投稿」がチェックされている状態の場合はチェックボックス非表示
・ラジオボタン「更新」「削除」がチェックされた場合のみチェックボックス表示
・チェックボックス未チェックのままsubmitボタンを押下した場合はエラー(javascript:alert)を表示し、投稿を中止
という条件をJavaScriptのみで処理したいんですが、各変数をif文で処理して「ERROR」を表示させる条件式を書いてみると、「投稿」「更新」はイメージ通りの動作をしてて、「削除」の時だけ
Notice: Undefined index: chkid
Warning: implode(): Invalid arguments passed
と表示されます
if (up.checked == true || de.checked == true)のコードで何も操作を行わなかった場合「ERROR5」と表示させるようにしたのに動かないのは何故でしょうか
HTML
1<html> 2 <head> 3 <meta charset="utf-8"> 4 <script> 5 function condition() { 6 var ps = document.getElementById("r1"); 7 var up = document.getElementById("r2"); 8 var de = document.getElementById("r3"); 9 if (ps.checked == true || up.checked == true) { 10 if (document.getElementById('name').value.length >= 10) { 11 window.alert("ERROR1"); 12 return false; 13 } else if (document.getElementById('name').value.length == "") { 14 window.alert("ERROR2"); 15 return false; 16 } else if (document.getElementById('comment').value.length >= 300) { 17 window.alert("ERROR3"); 18 return false; 19 } else if (document.getElementById('comment').value.length == "") { 20 window.alert("ERROR4"); 21 return false; 22 } 23 } 24 if (up.checked == true || de.checked == true) { 25 chk = document.getElementsByName('chkid[]'); 26 var v = 0; 27 for(b = 1; b <= chk.length; b++) { 28 obj = document.getElementByname("chkid[]" + b); 29 if (obj.checked == true) { 30 v++; 31 } 32 } 33 if (v == 0) { 34 alert ("ERROR5"); 35 return false; 36 } 37 } 38 } 39 function change(obj) { 40 console.log(obj.id); 41 if (obj.id == "r1") { 42 document.getElementById("send").value = "投稿"; 43 chkchange(true); 44 } else if (obj.id == "r2") { 45 document.getElementById("send").value = "更新"; 46 chkchange(false); 47 } else if (obj.id == "r3") { 48 document.getElementById("send").value = "削除"; 49 chkchange(false); 50 } 51 } 52 function chkchange(bool) { 53 chk = document.getElementsByName('chkid[]'); 54 var bchk = 0; 55 for(var box = 0; box < chk.length; box++) { 56 console.log(chk[box]); 57 console.log(box); 58 chk[box].disabled = bool; 59 } 60 } 61 </script> 62 </head> 63 <body> 64 <form method="post" action="" onsubmit="return condition()"> 65 <table> 66 <tr> 67 <td> 68 名前:<input type="text" name="name" id="name"> 69 内容:<textarea name="comment" cols="30" rows="3" id="comment"></textarea> 70 <input type="radio" name="bbs" id="r1" value="post" onchange="change(this)">投稿 71 <input type="radio" name="bbs" id="r2" value="update" onchange="change(this)">更新 72 <input type="radio" name="bbs" id="r3" value="delete" onchange="change(this)">削除 73 <input type="submit" value="投稿" id="send"> 74 </td> 75 </tr> 76 </table> 77 78<?php 79 while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 80?> 81 82 <table> 83 <input type="checkbox" name="chkid[]" value="<?=$row['id'] ?>"> 84 <tr> 85 <td>名前: 86 <?php echo $row['name'] ?> 87 </td> 88 </tr> 89 <tr> 90 <td>内容: 91 <?php echo $row['comment'] ?> 92 </td> 93 </tr> 94 </table> 95 96<?php 97 } 98 mysqli_free_result($result); 99 100 mysqli_close($link); 101?> 102 103 </form> 104 </body> 105</html>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。