前提・実現したいこと
以下の画像のように、テーブルの各項目に設置してあるチェックボックスをチェック済みのものだけカウントしたいのですが、列ごとにカウントする方法が思い浮かびません。
(必要人数の項目の左の数字がカウントされている数です)
発生している問題・エラーメッセージ
今の状況ですと、列ごとに分類できておらず、どの列のチェックボックスをチェックしてもすべての列においてカウントが反映されてしまいます。(すべての列で同じカウント数になってしまう)
該当のソースコード
javascript
1$(function() { 2 $('input:checkbox').change(function() { 3 var cnt = $('input:checkbox:checked').length; 4 $('span.count_check1').text(cnt); 5 }).trigger('change'); 6}); 7$(function() { 8 $('input:checkbox').change(function() { 9 var cnt = $('input:checkbox:checked').length; 10 $('span.count_check2').text(cnt); 11 }).trigger('change'); 12}); 13$(function() { 14 $('input:checkbox').change(function() { 15 var cnt = $('input:checkbox:checked').length; 16 $('span.count_check3').text(cnt); 17 }).trigger('change'); 18}); 19$(function() { 20 $('input:checkbox').change(function() { 21 var cnt = $('input:checkbox:checked').length; 22 $('span.count_check4').text(cnt); 23 }).trigger('change'); 24});
html
1<table> 2 <tr> 3 <th>必要人数</th> 4 <td><span class="count_check1"></span>/5</td> 5 <td><span class="count_check2"></span>/3</td> 6 <td><span class="count_check3"></span>/4</td> 7 <td><span class="count_check4"></span>/3</td> 8 </tr> 9 <tr> 10 <th>佐藤花子</th> 11 <td><input type="checkbox" name="riyu" value="1"></td> 12 <td><input type="checkbox" name="riyu" value="2"></td> 13 <td><input type="checkbox" name="riyu" value="3"></td> 14 <td><input type="checkbox" name="riyu" value="4"></td> 15 </tr> 16 17 <tr> 18 <th>山田太郎</th> 19 <td><input type="checkbox" name="riyu" value="1"></td> 20 <td><input type="checkbox" name="riyu" value="2"></td> 21 <td><input type="checkbox" name="riyu" value="3"></td> 22 <td><input type="checkbox" name="riyu" value="4"></td> 23 </tr> 24 <tr> 25 <th>鈴木一郎</th> 26 <td><input type="checkbox" name="riyu" value="1"></td> 27 <td><input type="checkbox" name="riyu" value="2"></td> 28 <td><input type="checkbox" name="riyu" value="3"></td> 29 <td><input type="checkbox" name="riyu" value="4"></td> 30 </tr> 31・ 32・ 33・ 34・ 35・ 36</table>
試したこと
列1,2,3,4に対応するデータごとにidを付けてJQueryで数えるチェックボックスの対象をそのIDのチェックボックスにした。
javascript
1$(function() { 2 $('input:checkbox').change(function() { 3 var cnt = $('#check1 input:checkbox:checked').length; 4 $('span.count_check1').text(cnt); 5 }).trigger('change'); 6}); 7$(function() { 8 $('input:checkbox').change(function() { 9 var cnt = $('#check2 input:checkbox:checked').length; 10 $('span.count_check').text(cnt); 11 }).trigger('change'); 12}); 13$(function() { 14 $('input:checkbox').change(function() { 15 var cnt = $('#check3 input:checkbox:checked').length; 16 $('span.count_check1').text(cnt); 17 }).trigger('change'); 18}); 19$(function() { 20 $('input:checkbox').change(function() { 21 var cnt = $('#check4 input:checkbox:checked').length; 22 $('span.count_check1').text(cnt); 23 }).trigger('change'); 24});
html
1<tr> 2 <th>佐藤花子</th> 3 <td id="check1"><input type="checkbox" name="riyu" value="1"></td> 4 <td id="check2"><input type="checkbox" name="riyu" value="2"></td> 5 <td id="check3"><input type="checkbox" name="riyu" value="3"></td> 6 <td id="check4"><input type="checkbox" name="riyu" value="4"></td> 7</tr> 8<tr> 9 <th>山田太郎</th> 10 <td id="check1"><input type="checkbox" name="riyu" value="1"></td> 11 <td id="check2"><input type="checkbox" name="riyu" value="2"></td> 12 <td id="check3"><input type="checkbox" name="riyu" value="3"></td> 13 <td id="check4"><input type="checkbox" name="riyu" value="4"></td> 14</tr> 15
この方法だと列ごとの一番最初のチェックボックスしかカウントされませんでした。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/02 03:11
2020/08/02 04:38