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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1134閲覧

チェックボックスの指定を2つ選択のみにしたいです

lolo1005

総合スコア1

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/06/17 06:52

編集2020/06/17 07:33

前提・実現したいこと

はじめまして。PHP初学者です。
初歩的なご質問で申し訳ないのですがどうしても分からず困っております。

現在お問い合わせフォームの作成に挑戦しており、
あるチェックボックスで2つ選択した時のみ送信可(それ以外だとアラートではなく、文字列としてエラー表示)にしたいのですが情報が少なくどうすればいいか分からない状況です。

html

1 2<tr> 3<th class="number"> 41 5</th> 6<td> 7<label>選択1<input type="checkbox" name="good[]" value="選択1"></label> 8</td> 9</tr> 10<tr> 11<th class="number"> 122 13</th> 14<td> 15<label>選択2<input type="checkbox" name="good[]" value="選択2"></label> 16</td> 17</tr> 18<tr> 19<th class="number"> 203 21</th> 22<td> 23<label>選択3<input type="checkbox" name="good[]" value="選択3"></label> 24</td> 25</tr> 26<tr> 27<th class="number"> 284 29</th> 30<td> 31<label>選択4<input type="checkbox" name="good[]" value="選択4"></label> 32</td> 33</tr> 34<tr> 35<th class="number"> 365 37</th> 38<td> 39<label>選択5<input type="checkbox" name="good[]" value="選択5"></label> 40</td> 41</tr> 42

試したこと

java

1jQuery(function() { 2 3 // チェックボックスをチェックしたら発動 4 jQuery('input[name="good[]"]').change(function() { 5 6 // ①チェックが入ったチェックボックスの個数を変数に格納 7 var len = jQuery('input[name="good[]"]:checked').length; 8 9 // ②チェックが2つ以上入ったら 10 if (len >= 2) { 11 12 // ③disabledを付けてチェックできなくする 13 jQuery('input[name="good[]"]').not(':checked').attr('disabled', 'disabled'); 14 15 // チェックが2つ未満だったら 16 } else { 17 18 // ④disabledを削除してチェックできるようになる 19 jQuery('input[name="good[]"]').not(':checked').removeAttr('disabled'); 20 } 21 22 }); 23});

補足情報(FW/ツールのバージョンなど)

上記のソースコードを試して成功したのはいいのですが、
チェック数が1だとそのまま送信できてしまうのでこのソースコードに
選択が2つ未満だった時、送信を押すと2つ選択されていません。のエラーメッセージを表示させるようにしたいです。
教えて頂きました内容はただコピペではなくしっかりと学び、次に活かしたいと思います。
文面が分かりづらいかもしれませんが、どうぞ宜しくお願い致します。

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

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

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

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

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

June666

2020/06/17 07:04

チェックボックスを実装しているhtml部分をご提示ください。 あとタグがJavaになっているのでJavaScriptに直しておきましょう。
guest

回答1

0

ベストアンサー

ざっくりこんな感じでどうでしょう?

投稿2020/06/17 07:31

yambejp

総合スコア115010

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

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

yambejp

2020/06/17 07:31

<script> $(function(){ $('#f1').on('submit',function(e){ var l=$('input[name="good[]"]:checked').length; if(l!==2){ alert('good は2つ選択'); e.preventDefault(); } }); }); </script> <form id="f1" method="post"> <label><input type="checkbox" name="good[]" value="1">1</label> <label><input type="checkbox" name="good[]" value="2">2</label> <label><input type="checkbox" name="good[]" value="3">3</label> <input type="submit" value="send"> </form>
lolo1005

2020/06/17 07:40

ありがとうございます! このようなイメージなのですが、アラートではなくフォームに文字として出力は難しいのでしょうか? 他のフォーム項目が赤い文字で出力されているのでそれに合わせて表示したいのが理想です。 お忙しいとは思いますが宜しくお願い致します。
lolo1005

2020/06/17 07:42

因みに使用しているのはプラグインのcontact form 7です。
yambejp

2020/06/17 07:55

文字出力するなら、エラー出力場所を用意してそこに流し込むだけ <script> $(function(){ $('#f1').on('submit',function(e){ var l=$('input[name="good[]"]:checked').length; var err={"goods":""}; if(l!==2){ err["goods"]="2つ選べ"; e.preventDefault(); } $('.error[data-target="goods[]"]').text(err["goods"]); }); }); </script> <form id="f1" method="post"> <label><input type="checkbox" name="good[]" value="1">1</label> <label><input type="checkbox" name="good[]" value="2">2</label> <label><input type="checkbox" name="good[]" value="3">3</label> <span class="error" data-target="goods[]"></span> <input type="submit" value="send"> </form>
yambejp

2020/06/17 07:56

チェックボックスのチェック数とかだとバリデートエンジンで指定するのは かえってめんどうかもしれないので、普通にかいてみました
lolo1005

2020/06/17 08:52

本当にありがとうございます。無事いけました。 これを機にしっかりと学ばせて頂きます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問