・チェックボックス未チェックのままsubmitボタンを押下した場合はエラー(javascript:alert)を表示し、投稿を中止
という条件をJavaScriptのみで処理したいんですが、アラート表示の条件がうまく処理できません
この件について「caでループをまわしているからcaでとればいい」とアドバイスされたのですが、この文章の意味ってelse if (up.checked == true || de.checked == true)で変数cbをcaに変更してchkid[]の数をcaに代入させればいいということを言われてると解釈したんですが、本当はどういう事を指摘されてるのか全く理解できません
因みにでfor文中のif文でやりたいことは、チェックボックスのvalue値を変数に入れるという処理です
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 == "") { 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 == "") { 20 window.alert("ERROR4"); 21 return false; 22 } 23 } else if (up.checked == true || de.checked == true) { 24 ca = document.getElementsByName('chkid[]'); 25 var box = ""; 26 for(var cb = 0; cb < ca.length; cb++) { 27 if (document.ca.elements[cb].checked) { 28 box = box + document.ca.elements[cb].value; 29 } 30 return true; 31 } 32 if (box == "") { 33 window.alert("ERROR5"); 34 return false; 35 } 36 } 37 } 38 function change(obj) { 39 console.log(obj.id); 40 if (obj.id == "r1") { 41 document.getElementById("send").value = "投稿"; 42 chkchange(true); 43 } else if (obj.id == "r2") { 44 document.getElementById("send").value = "更新"; 45 chkchange(false); 46 } else if (obj.id == "r3") { 47 document.getElementById("send").value = "削除"; 48 chkchange(false); 49 } 50 } 51 function chkchange(bool) { 52 chk = document.getElementsByName('chkid[]'); 53 for(var box = 0; box < chk.length; box++) { 54 console.log(chk[box]); 55 console.log(box); 56 chk[box].disabled = bool; 57 } 58 } 59 </script> 60 </head> 61 <body> 62 <form method="post" action="" name="fn" onsubmit="return condition()"> 63 <table> 64 <tr> 65 <td> 66 名前:<input type="text" name="name" id="name"> 67 内容:<textarea name="comment" cols="30" rows="3" id="comment"></textarea> 68 <input type="radio" name="bbs" id="r1" value="post" onChange="change(this)">投稿 69 <input type="radio" name="bbs" id="r2" value="update" onChange="change(this)">更新 70 <input type="radio" name="bbs" id="r3" value="delete" onChange="change(this)">削除 71 <input type="submit" value="投稿" id="send"> 72 </td> 73 </tr> 74 </table> 75 76<?php 77 while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 78?> 79 80 <table> 81 <input type="checkbox" name="chkid[]" value="<?=$row['id'] ?>"> 82 <tr> 83 <td>名前: 84 <?php echo $row['name'] ?> 85 </td> 86 </tr> 87 <tr> 88 <td>内容: 89 <?php echo $row['comment'] ?> 90 </td> 91 </tr> 92 </table> 93 94<?php 95 } 96 mysqli_free_result($result); 97 98 mysqli_close($link); 99?> 100 101 </form> 102 </body> 103</html>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。