前提・実現したいこと
ウェブサイト上でラジオボタンとチェックボックスを用意し、
押したボタンに対応するコンテンツを表示させたいです。
つまりラジオボタンに
① ② ③
があり、
チェックボックスに
A B C D E
がある状態とします。
コンテンツ<あ>はラジオボタンを問わず、Aが選ばれていれば表示、
コンテンツ<い>は①かつ、AもしくはBが選ばれていた場合に表示、
というようなことがしたいです。
発生している問題・エラーメッセージ
①かつAが選ばれている場合は<あ>のような1:1の関係の表示はできるのですが、 どうすれば上記のような複数条件に対応するような表示の仕方ができるのか、 調べてみたのですがよくわからない状況です。 アドバイスいただけますと幸いです。
該当のソースコード
■HTML <div class="search-box mb"> <span class="search-box_title">■ラジオボタン</span><br> <label><input type="radio" name="kind" value="kind01">①</label> <label><input type="radio" name="kind" value="kind02">②</label> <label><input type="radio" name="kind" value="kind03">③</label> </div> <br> <div class="search-box"> <span class="search-box_title">■チェックボックス</span><br> <label><input type="checkbox" name="cat" value="cat01">A</label> <label><input type="checkbox" name="cat" value="cat02">B</label> <label><input type="checkbox" name="cat" value="cat03">C</label> <label><input type="checkbox" name="cat" value="cat04">D</label> <label><input type="checkbox" name="cat" value="cat05">E</label></div> <div class="cat_image_all"> <div class="cat_image" data-kind="kind01" data-cat="cat01"> <a href="XXX"> <img src="YYY" alt=""> <p class="page_title">あ</p> </a> </div> <div class="cat_image" data-kind="kind02" data-cat="cat02"> <a href="XXX"> <img src="YYY" alt=""> <p class="page_title">い</p> </a> </div> ■CSS .search-box_title{ font-weight: bold; } .search-box label { cursor: pointer; display: inline-block; margin-right: 10px; line-height: 16px; } .search-box input[type="radio"] { width: 16px; height: 16px; margin: -2px 5px 0 0; padding: 0; box-sizing: border-box; vertical-align: middle; } .search-box input[type="checkbox"] { width: 16px; height: 16px; margin: -2px 5px 0 0; padding: 0; box-sizing: border-box; vertical-align: middle; } .cat_image_all { display: flex; flex-wrap: wrap; justify-content: space-between; max-width: 640px; margin: 3em auto 0; } .cat_image { width: 48%; max-width: 190px; margin: 0 0 2em; } .cat_image.is-hide { display: none; } .cat_image a { display: block; color: #444; } .cat_image a:hover { text-decoration: underline; } ■JavaScript var searchBox = '.search-box'; var searchItem = '.search-box input'; var listItem = '.cat_image'; var hideClass = 'is-hide'; $(function() { $(searchItem).on('change', function() { search_filter(); }); }); function search_filter() { $(listItem).removeClass(hideClass); for (var i = 0; i < $(searchBox).length; i++) { var name = $(searchBox).eq(i).find('input').attr('name'); var searchData = selected_items(name); if(searchData.length === 0 || searchData[0] === '') { continue; } for (var j = 0; j < $(listItem).length; j++) { var itemData = $(listItem).eq(j).data(name); if(searchData.indexOf(itemData) === -1) { $(listItem).eq(j).addClass(hideClass); } } } } function selected_items(name) { var searchData = []; $('input[name=' + name + ']:checked').each(function() { searchData.push($(this).val()); }); return searchData; }
試したこと
ネットで似たようなことをされようとしている人のブログなどを探したのですが見つからず
ここに辿り着きました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。