質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1916閲覧

JavaScript 書き方

a-_.

総合スコア133

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/09/04 08:52

編集2016/09/06 02:38

・チェックボックス未チェックのまま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>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

サンプルコード

html

1<!DOCTYPE HTML> 2<html lang="ja"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>サンプルコード</title> 6 </head> 7 <body> 8 <form id="form" action="" method="post"> 9 <p> 10 <label> 11 <input type="checkbox" name="chk[]" value="1" /> 12 </label> 13 </p> 14 <p> 15 <label> 16 <input type="checkbox" name="chk[]" value="2" /> 17 </label> 18 </p> 19 <p> 20 <label> 21 <input type="checkbox" name="chk[]" value="3" /> 22 </label> 23 </p> 24 <p> 25 <button type="button" id="submitBtn">SUBMIT</button> 26 </p> 27 </form> 28 29 <script type="text/javascript"> 30 31 // バリデーション関数 32 var validate = function () { 33 34 // チェックされたチェックボックスの数 35 var checkedElements = 0; 36 37 // chk[] という name属性 を持つ要素を配列で取得 38 var checkButtons = document.getElementsByName('chk[]'); 39 40 // checkButtons は配列なので、ループの中で 一つずつチェックされているか判定 41 for (var i = 0; i < checkButtons.length; i++) { 42 43 // チェックされていれば、変数 checkedElements をカウントアップ 44 if (checkButtons[i].checked === true) { 45 checkedElements++; 46 } 47 } 48 49 // 一つもチェックされていない時 50 if (checkedElements === 0) { 51 alert('チェックボックスは少なくとも一つはチェックしてください。'); 52 53 // 処理をここでやめる 54 return; 55 } 56 57 // エラーがない時、SUBMIT を実行する 58 document.getElementById('form').submit(); 59 }; 60 61 var btnSubmit = document.getElementById('submitBtn'); 62 btnSubmit.addEventListener('click', validate); 63 </script> 64 </body> 65</html>

投稿2016/09/04 09:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

document.ca.elements[cb].checked
じゃなくて
ca[cb].checked

投稿2016/09/04 09:14

takaw

総合スコア128

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

a-_.

2016/09/04 09:20

ご回答ありがとうございます document.も省くってことですか?
takaw

2016/09/04 10:03

そう思うのならやってみましょう
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問