質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

解決済

1回答

6006閲覧

Datatablesの絞り込み機能をデータ全体に適用したいのですが。

harusyoui

総合スコア55

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

0クリップ

投稿2019/05/07 00:51

絞り込みを行うと現在表示されてるデータにしか適用されず、
次のページにいったり表示件数を変更すると絞りこめていません、
上に書いてあるフィルターで下に書いてあるJs側で絞り込みを行う際に適用する範囲を
どう指定すれば上手くいくのでしょうか?宜しくお願いします。

該当のソースコード

javascript

1 <script src="src/table2csv.js"></script> 2 3 <div class="row"> 4 5 <div class="col-xs-12"> 6 <div class="box body"> 7 8 <div class="col-lg-2"> 9 ブランド<br> 10 <select id="brand-select" class="form-control" style="height: 35px; width: 200px;"> 11 <option value="">全部</option> 12 @foreach ($kouho_brands as $kouho_brand) 13 <option value='{{ $kouho_brand }}'>{{ $kouho_brand }}</option> 14 @endforeach 15 </select> 16 シーズン<br> 17 <select id="season-select" class="form-control" style="height: 35px; width: 200px;"> 18 <option value="">全部</option> 19 <option value='春'></option> 20 <option value='夏'></option> 21 <option value='秋'></option> 22 <option value='冬'></option> 23 </select> 24 </div> 25 26 <div class="col-lg-offset-1 col-lg-2"> 27 カラー<br> 28 <select id="color-select" class="form-control" style="height: 35px; width: 200px;"> 29 <option value="">全部</option> 30 @foreach ($kouho_colors as $kouho_color) 31 <option value='{{ $kouho_color }}'>{{ $kouho_color }}</option> 32 @endforeach 33 </select> 34 サイズ<br> 35 <select id="size-select" class="form-control" style="height: 35px; width: 200px;"> 36 <option value="">全部</option> 37 <option value='S'>S</option> 38 <option value='M'>M</option> 39 <option value='L'>L</option> 40 <option value='Free'>Free</option> 41 </select> 42 </div> 43 44 <div class="col-lg-offset-1 col-lg-2"> 45 損益分岐<br> 46 <select id="bunki-select" class="form-control" style="height: 35px; width: 200px;"> 47 <option value="">全部</option> 48 <option value='完売'>完売</option> 49 <option value='達成'>達成</option> 50 <option value='未達'>未達成</option> 51 </select> 52 セール<br> 53 <input id="checkbox_24" type="checkbox" value="セール中"><label for="checkbox">セール中</label> 54 </div> 55 56 <div class="col-lg-offset-1 col-lg-2"> 57 在庫数(入力された数値以下)<br> 58 <input id="numberbox" type="number" name="sample"> 59 </div> 60 61 <div class="col-lg-12"> 62 カテゴリー<br> 63 <input id="checkbox_1" type="checkbox" value="トップス" checked><label for="checkbox">トップス</label> 64 <input id="checkbox_2" type="checkbox" value="ジャケット/アウター" checked><label for="checkbox">ジャケット/アウター</label> 65 </div> 66 67 <div id="example2_wrapper" class="dataTables_wrapper form-inline dt-bootstrap"> 68 <div class="row"> 69 <div class="col-sm-12"> 70 <table id="table" class="table table-bordered table-hover dataTable" role="grid" aria-describedby="example2_info"> 71 table部分 72 </table> 73 </div> 74 </div> 75 </div> 76 </div> 77 </div> 78 </div> 79 80 <!-- 絞り込みのスクリプト --> 81 <script> 82 83 $('#downloadCsvBtn').click(function () { 84 // ファイル名の定義(table.csv) 85 $("#table").table2csv({ filename: 'table.csv' }); 86 // CSV出力 87 $("#table").table2csv(); 88 }) 89 90 jQuery(function ($) { 91 // セレクトボックスが変更されたら処理をする 92 $('#brand-select, #season-select, #color-select, #size-select, #bunki-select, #checkbox_1, #checkbox_2, #checkbox_24, #numberbox').change(function () { 93 94 // 選択した値を取得 95 var select_val_brand = $('#brand-select option:selected').val(); 96 var select_val_season = $('#season-select option:selected').val(); 97 var select_val_color = $('#color-select option:selected').val(); 98 var select_val_size = $('#size-select option:selected').val(); 99 var select_val_bunki = $('#bunki-select option:selected').val(); 100 var check_val_1 = $('#checkbox_1:checked').val(); 101 var check_val_2 = $('#checkbox_2:checked').val(); 102 var check_val_24 = $('#checkbox_24:checked').val(); 103 var number = $('#numberbox').val(); 104 105 // tbodyのtr数回 処理をする 106 $.each($("#table tbody tr"), function (index, element) { 107 108 // 選択した値がともに空欄だったら、全ての行を表示する為の処理 109 if (select_val_brand == "" && select_val_season == "" && select_val_color == "" && select_val_size == "" && select_val_bunki == "" && 110 check_val_1 != undefined && check_val_2 != undefined && check_val_24 == undefined && number == "") 111 { 112 $(element).css("display", "table-row"); 113 return true; // 次のtrへ 114 } 115 116 // 1行をテキストとして取り出し、セレクトボックスで選択した値があるかをチェック 117 var row_text_brand = $(element).children('td').eq(2).text(); 118 var row_text_season = $(element).children('td').eq(4).text(); 119 var row_text_color = $(element).children('td').eq(5).text(); 120 var row_text_size = $(element).children('td').eq(6).text(); 121 var row_text_bunki = $(element).children('td').eq(11).text(); 122 var row_text_category = $(element).children('td').eq(3).text(); 123 var row_text_sale = $(element).children('td').eq(10).text(); 124 var row_text_stock = $(element).children('td').eq(9).text(); 125 126 // フラグをfalseで初期化 127 var is_val_brand_match = false; 128 var is_val_season_match = false; 129 var is_val_color_match = false; 130 var is_val_size_match = false; 131 var is_val_bunki_match = false; 132 var is_val_category_match = false; 133 var is_val_sale_match = false; 134 var is_val_stock_match = false; 135 136 // ブランドの値が空欄、もしくは、値が存在するか? 137 if ( select_val_brand == "" || row_text_brand.indexOf(select_val_brand) != -1 ) { 138 is_val_brand_match = true; 139 } 140 141 // シーズンの値が空欄、もしくは、値が存在するか? 142 if ( select_val_season == "" || row_text_season.indexOf(select_val_season) != -1 ) { 143 is_val_season_match = true; 144 } 145 146 // カラーの値が空欄、もしくは、値が存在するか? 147 if ( select_val_color == "" || row_text_color.indexOf(select_val_color) != -1 ) { 148 is_val_color_match = true; 149 } 150 151 // サイズの値が空欄、もしくは、値が存在するか? 152 if ( select_val_size == "" || row_text_size.indexOf(select_val_size) != -1 ) { 153 is_val_size_match = true; 154 } 155 156 // 分岐の値が空欄、もしくは、値が存在するか? 157 if ( select_val_bunki == "" || row_text_bunki.indexOf(select_val_bunki) != -1 ) { 158 is_val_bunki_match = true; 159 } 160 161 // カテゴリーの値のどれかに一致するか? 162 if ( row_text_category == check_val_1 || row_text_category == check_val_2) { 163 is_val_category_match = true; 164 } 165 166 // セール中か? 167 if ( row_text_sale == check_val_24 || check_val_24 == undefined ) { 168 is_val_sale_match = true; 169 } 170 171 // 入力された在庫数以下か? 172 if ( row_text_stock <= number || number == "" ) { 173 is_val_stock_match = true; 174 } 175 176 // それぞれの値の結果をチェックして、全てtrueなら表示 177 if (is_val_brand_match && is_val_season_match && is_val_color_match && is_val_size_match && is_val_bunki_match && 178 is_val_category_match && is_val_sale_match && is_val_stock_match) { 179 // 見つかった場合は表示する 180 $(element).css("display", "table-row"); 181 } else { 182 // 見つからなかった場合は非表示に 183 $(element).css("display", "none"); 184 } 185 186 }); 187 188 }); 189 }); 190 </script>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「Datatables」というのはhttps://datatables.net/ で公開されている
jQuery用のライブラリ、でよかったでしょうか。

現状だと
「セレクトボックスが変更されたらtableタグを直接書き換える」
となってますが、これを
「セレクトボックスが変更されたらDataTablesの検索メソッドを使って絞り込みを実行する」
という処理に変えればよさそうです。

このライブラリは公式マニュアルのexamplesページにサンプルがたくさんありますが、
下記が参考になると思います。
https://datatables.net/examples/api/regex.html

投稿2019/05/11 22:11

Eggpan

総合スコア2727

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問