前提・実現したいこと
チェックボックスと入力を使っての検索でシステムを作っているのですが
競合が発生してしまい困っています。
発生している問題・エラーメッセージ
入力検索をした後チェックボックスで検索を行うと入力検索の値が引き継がれません。
逆もまた然りです。
###ソースコード
<div class="search-box"> <span class="search-box_label">性別:</span> <label> <input type="checkbox" name="search_gender" value="男性">男性 </label> <label> <input type="checkbox" name="search_gender" value="女性">女性 </label> </div> <div class="search-box"> <span class="search-box_label">部署:</span> <label> <input type="checkbox" name="search_dept" value="1部">1部 </label> <label> <input type="checkbox" name="search_dept" value="2部">2部 </label> <label> <input type="checkbox" name="search_dept" value="3部">3部 </label> </div> <input type="text" class="tac inCenter" id="search-text" placeholder="文字を入力"> <table id="abcd" class="target-area sort" border> <thead> <tr class="emp_index"> <th class="sort" data-sort="All_emp_name">社員名</th> <th class="sort" data-sort="All_emp_gender">性別</th> <th class="sort" data-sort="All_dept_name">部署</th> </tr> </thead> <tbody class="list"> <tr class=""> <td class="All_emp_name">小次郎</td> <td class="All_emp_gender">男性</td> <td class="All_dept_name">1部</td> </tr> <tr class=""> <td class="All_emp_name">太郎</td> <td class="All_emp_gender">男性</td> <td class="All_dept_name">3部</td> </tr> <tr class=""> <td class="All_emp_name">花子</td> <td class="All_emp_gender">女性</td> <td class="All_dept_name">3部</td> </tr> <tr class=""> <td class="All_emp_name">涼子</td> <td class="All_emp_gender">女性</td> <td class="All_dept_name">1部</td> </tr> </tbody> </table> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script type="text/javascript"> $(function() { $(":checkbox") .prop("checked", true) .on("change", function() { var gender = $("[name=search_gender]:checked") .map(function() { return $(this).val(); }) .get(); var dept = $("[name=search_dept]:checked") .map(function() { return $(this).val(); }) .get(); $("#abcd tbody tr").each(function() { //$(this).toggle( if ($.inArray($(this).find("td.All_emp_gender").text(), gender) >= 0 && $.inArray( $(this).find("td.All_dept_name").text(), dept) >= 0) { $(this).show(); } else { $(this).hide(); } }); }); }) .eq(0) .trigger("change"); $(function() { searchWord = function() { var searchText = $(this).val(), // 検索ボックスに入力された値 targetText; $("tbody tr").each(function() { targetText = $(this).text(); // 検索対象となるリストに入力された文字列が存在するかどうかを判断 if (targetText.indexOf(searchText) != -1) { $(this).show(); } else { $(this).hide(); } }); }; // searchWordの実行 $("#search-text").on("input", searchWord); }); </script>
試したこと
片方をcssのaddclassでnoneを追加するなど優先度を下げてみましたが駄目でした。
補足情報(FW/ツールのバージョンなど)
左右がOR検索・上下がAND検索です
回答1件
あなたの回答
tips
プレビュー