
お世話になります。
IDやクラスで括られた、特定の範囲のチェックボックスを一括操作したいと考えています。
チェックボックス一括チェックと検索すると多くの情報を拝見することが出来ますが、どれも全てのチェックボックスが対象で、”特定の範囲”を対象としたも情報を得ることが出来ません。御教示願えないでしょうか。
少し具体的にご説明すると、北海道・東北地方というグループにある一括チェックボックスをチェックすると、北海道・東北地方に属する、同県がチェックされ、関東地方にある一括を操作すると、関東地方に属する都県がチェックされるという具合です。(各都道府県のname属性は同じ)
以下ソースは、色々と試しているうちの1つです。
お忙しいなか恐縮ですがアドバイスのほど頂戴出来れば幸いです。
よろしくお願いいたします。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4 …
<script>
$(function() {
$('#category_all1').on('click', function() {
$('.category').prop('checked', this.checked);
});
$('.category').on('click', function() {
if ($('#categories1 :checked').length == $('#categories1 :input').length){
$('#category_all1').prop('checked', 'checked');
}else{
$('#category_all1').prop('checked', false);
}
});
$('#category_all2').on('click', function() {
$('.category').prop('checked', this.checked);
});
$('.category').on('click', function() {
if ($('#categories2 :checked').length == $('#categories2 :input').length){
$('#category_all2').prop('checked', 'checked');
}else{
$('#category_all2').prop('checked', false);
}
});
});
</script>
<input type="checkbox" id="category_all1" name="category_all1">
<label for="category_all1">北海道・東北地方</label>
<div id="categories1">
<input type="checkbox" name="category[]" id="category01" value="01" class="category">
<label for="category01">北海道</label>
<input type="checkbox" name="category[]" id="category02" value="02" class="category">
<label for="category02">青森</label>
<input type="checkbox" name="category[]" id="category03" value="03" class="category">
<label for="category03">秋田</label>
<input type="checkbox" name="category[]" id="category04" value="04" class="category">
<label for="category04">岩手</label>
<input type="checkbox" name="category[]" id="category05" value="05" class="category">
<label for="category05">宮城</label>
</div>
<input type="checkbox" id="category_all2" name="category_all2">
<label for="category_all2">関東地方</label>
<div id="categories2">
<input type="checkbox" name="category[]" id="category06" value="06" class="category">
<label for="category06">千葉</label>
<input type="checkbox" name="category[]" id="category07" value="07" class="category">
<label for="category07">埼玉</label>
<input type="checkbox" name="category[]" id="category08" value="08" class="category">
<label for="category08">東京</label>
<input type="checkbox" name="category[]" id="category09" value="09" class="category">
<label for="category09">神奈川</label>
<input type="checkbox" name="category[]" id="category10" value="10" class="category">
<label for="category10">茨城</label>
</div>
No.2ベストアンサー
- 回答日時:
No1です。
>チェックを外す動きを持たせるためにはどのようにしたらいいのでしょうか。
一括ボックスと同じ状態にすればいいってことでしょうか?
そちらのほうが処理内容としては単純になります。
「チェック状態か」というチェックを外して、一括ボックスと同じ状態にセットすればよいです。
document.addEventListener('click', e =>{
let
t = e.target,
m = t.id.match(/^category_all(\d+)$/);
if(t.nodeName != 'INPUT' || !m) return;
let
f = t.checked,
sel = '#categories' + m[1] + ' input[type="checkbox"]';
document.querySelectorAll(sel).forEach( el =>{ el.checked = f; });
});
fujillinさま
早々のお返事をありがとうございます!
セットごとにJS部分が増えていくのかと考えていましたが、少ないスクリプトで実装出来ることに頭が下がります。
期待通りの動きを得ることが出来ました。
1度目のJSと2どめのJSとで見比べながら、理解を深めたいと思います。
ありがとうございました!
No.1
- 回答日時:
こんばんは
規則性に関する説明がないので、勝手に以下のように解釈しました。
・「一括チェックボックス」のIDは、必ず「category_all##」形式となっている
(##は正の整数値)
・対応するグループは、IDが「categories##」の要素内の<input tyep="checkbox">全て
(##は一括チェックボックスのNoと同一)
・「一括ボックスをチェックした時」だけ、対応するinputをチェック状態にする
(チェックを外した時は何もしない)
…という条件でよいのであれば、
document.addEventListener('click', e =>{
let sel, t = e.target, m = t.id.match(/^category_all(\d+)$/);
if(t.nodeName != 'INPUT' || !m || !t.checked) return;
sel = '#categories' + m[1] + ' input[type="checkbox"]';
document.querySelectorAll(sel).forEach( el =>{ el.checked = 'cheked'; });
});
※ 上記のスクリプトだけであれば、jQueryは不要です。
※ 前記の条件だけを利用していますので、他のIDやnameは無くても動作します。
※ 条件を満たす組み合わせであれば、文章中に何セットあっても動作します。
fujillinさま
おやすみのところ、ご親切な回答をありがとうございます。
描いている動作を実現出来て感謝です。
しかも短いJSで動くので尚更。
感激です。
>規則性に関する説明がないので
恐れ入ります。囲んだID単位で動かせれば他は何とかできれば・・・そんな気持ちでいたので特に規則は記載しませんでした。
ただ、申し訳ありませんが、チェックを外す動きを持たせるためにはどのようにしたらいいのでしょうか。
お願いばかりで恐縮ですが、今一度、ご指導いただければ幸いです。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- その他(プログラミング・Web制作) seleniumbasic chrome操作について 1 2023/03/29 15:40
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
selectメニューによるチェック...
-
背景色を変えて未入力チェック...
-
【jsp/Java】チェックボックス...
-
チェックボックスを使って条件検索
-
チェックボックスが1つ以上チェ...
-
【JS】selectでchangeした時の...
-
return trueとreturn falseの用...
-
ラジオボタンのチェックが外れ...
-
Selectボックスの幅を自動で広...
-
プルダウン選択を変更すると、...
-
<JavaScript>tableタグを入力不...
-
正規表現で複数マッチ条件で悩...
-
サイトのリロード間隔を選択で...
-
プルダウンメニューの件でお願...
-
ラジオボタンにタブインデック...
-
Cookieに保存されない
-
selectのonChangeが動作しません
-
日付入力欄の表示形式を自動的...
-
リストボックスの項目の順番を...
-
onchangeイベントを強制的に発...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックスのON/OFFでVal...
-
【jsp/Java】チェックボックス...
-
チェックボックスの設定
-
オフになっているチェックボッ...
-
スクリプト内でチェックボック...
-
背景色を変えて未入力チェック...
-
確認ページからフォームページ...
-
チェックが入っていなかったら...
-
JSP内で可変するチェックボック...
-
チェックボックスで指定したも...
-
チェックボックス可否条件記述...
-
checkboxをクリックしてリロー...
-
チェックボックスを使って条件検索
-
javascript checkbox
-
チェックボックスで選択したも...
-
チェックボックスに全てチェッ...
-
チェックボックスに連動するテ...
-
チェックボックスの値を変数に ...
-
一方のチェックボックスのON/OF...
-
チェックボックスの値を取り出...
おすすめ情報