セレクトボックスとチェックボックスを使って、tableの行を絞り込み表示させたいです。
(javascript初心者なのでオープンソースを書き換えて使用しています。)
最初はtableの行が全て表示している状態で、セレクトボックスとチェックボックスでAND検索させていきたいです。
できれば、全ての選択を解除する「選択をクリアする」ボタンと、該当データが無い場合に空欄ではなく「該当がありません」が表示されればベストです。
よろしくお願いいたします。
発生している問題・エラーメッセージ
セレクトボックスは2項目設置し連動できたのですが、チェックボックスでの複数選択が増えた場合にわからなくなってしまいました、、、
該当のソースコード
検索項目は3つです。
<div id="search-bx"> <select id="1-select" class="store-select" name="area"> <option value="">地域から検索</option> <option value="1area">1-地域</option> <option value="2area">2-地域</option> <option value="3area">3-地域</option> </select> <div id="2-checkbox"> <label><input type="checkbox" class="checkbox-input" name="city" value="1-city">1-都市</label> <label><input type="checkbox" class="checkbox-input" name="city" value="2-city">2-都市</label> <label><input type="checkbox" class="checkbox-input" name="city" value="3-city">3-都市</label> </div> <select id="3-select" class="store-select" name="brand"> <option value="">ブランド検索</option> <option value="1-brand">1-ブランド</option> <option value="2-brand">2-ブランド</option> <option value="3-brand">3-ブランド</option> </select> </div>
検索対象テーブル
<div id="store-data"> <table> <thead> <tr class="active"> <td>地域</td> <td>都市</td> <td>ブランド</td> </tr> </thead> <tbody> <tr> <td class="area"><span class="1-aaa">1-地域</span></td> <td class="city"><span class="1-city">1-都市</span></td> <td class="brand"><span class="1-brand">1-ブランド</span></td> </tr> <tr> <td class="area"><span class="1-aaa">1-地域</span></td> <td class="city"><span class="2-city">2-都市</span></td> <td class="brand"><span class="2-brand">2-ブランド</span></td> </tr> <tr> <td class="area"><span class="1-aaa">1-地域</span></td> <td class="city"><span class="3-city">3-都市</span></td> <td class="brand"><span class="3-brand">3-ブランド</span></td> </tr> </tbody> </table> </div>
javascriptは下記のようにしたら、セレクトボックス2項目はうまくいきました。
チェックボックスを追加するにはどのようにしたらよいでしょうか?
$(function() { var lists = $('#store-data table tbody tr'); $(document).on('change', '#search-bx select', function() { lists.show(); for (var i = 0; i < $('#search-bx select').length; i++) { // 絞り込みの項目を取得 var item = $('#search-bx select').eq(i).attr('name'); // 絞り込みの対象を取得 var target = $('#search-bx select').eq(i).val(); if(target != '') { for (var j = 0; j < lists.length; j++) { // 絞り込み対象でない場合は非表示 if(!lists.eq(j).find('.' + item).find('span').hasClass(target)) { lists.eq(j).hide(); } }; } }; }); });
すべて未選択だった場合はALLで表示するのでしょうか?一切表示しないのでしょうか?また地域・都市・ブランドの相互の関係はand検索なのでしょうかor検索なのでしょうか?
最初の表示はtable全て表示です、未選択の場合も全て表示です。地域と都市とブランドは相互にAND検索で絞りこめるようにしたいです。できれば、最後に「選択をクリアする」ボタンを付けられたらいいのかなとも思っています。
あと、できれば該当しない場合に空欄ではなく「該当項目がありません。」と表示させるのはできるでしょうか?
後半、質問テンプレート部分が残っています。見ている人に正しく伝わらない原因になりかねませんので、本質門内容と関係ない部分は精査願います。
回答2件
あなたの回答
tips
プレビュー