質問するログイン新規登録

質問編集履歴

4

修正

2020/03/20 14:48

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- jQueryの絞り込み検索にページ送り機能を追加したい
1
+ 質問質問質問質問質問
body CHANGED
@@ -1,15 +1,1 @@
1
- 初めまして。JS初心者です。
2
- 下記サイトを参考にjQueryの絞り込み検索(カテゴリ間はAND検索、カテゴリ内はOR検索)までお陰様で問題なく実装することができました。この状態にページ送り機能を追加したいです。
3
- https://teratail.com/questions/119008
4
-
5
- **●実現したいこと**
6
- ・常に3件表示にしたい(チェックボックスまたはリセットボタンをクリック後に3件表示になるよう調整済み)
7
- ・例えば「a-1」「a-2」のチェックボックスを選択した場合、「1,3,4,6,7,9,10,12」が絞り込まれます。
8
- 「1,3,4」→ページ送り→「6,7,9」→ページ送り→「10,12」
9
- 「10,12」→ページ戻し→「6,7,9」ページ戻し→「1,3,4」
1
+ 質問質問質問質問質問質問質問質問質問質問質問質問質問質問質問
10
- となるようにしたい
11
-
12
- https://codepen.io/anon/pen/PvXrZZ
13
-
14
- どなたか方法をご教示いただけますと幸いです。
15
- 何卒よろしくお願い申し上げます。

3

2020/03/20 14:48

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -3,8 +3,7 @@
3
3
  https://teratail.com/questions/119008
4
4
 
5
5
  **●実現したいこと**
6
- ・絞り込み結果が3件以下の場合はページャーは非表示にしたい
7
- ページを開いたときはデフォルトで3件表示にしたい(チェックボックスまたはリセットボタンをクリック後に3件表示になるよう調整済み)
6
+ 常に3件表示にしたい(チェックボックスまたはリセットボタンをクリック後に3件表示になるよう調整済み)
8
7
  ・例えば「a-1」「a-2」のチェックボックスを選択した場合、「1,3,4,6,7,9,10,12」が絞り込まれます。
9
8
  「1,3,4」→ページ送り→「6,7,9」→ページ送り→「10,12」
10
9
  「10,12」→ページ戻し→「6,7,9」ページ戻し→「1,3,4」

2

概要変更

2019/06/02 14:58

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- jQueryの絞り込み検索ページ送り機能併用による不具合
1
+ jQueryの絞り込み検索ページ送り機能を追加したい
body CHANGED
File without changes

1

概要を変更いたしました

2019/06/02 11:56

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,355 +1,16 @@
1
1
  初めまして。JS初心者です。
2
- 下記を参考にjQueryの絞り込み検索(カテゴリ間はAND検索、カテゴリ内はOR検索)までお陰様で問題なく実装することができましたが、ページ送り機能を併用したところ、動作に不具合が生じました。(ちなみにページ送り機能のJSも拾です
2
+ 下記サイトを参考にjQueryの絞り込み検索(カテゴリ間はAND検索、カテゴリ内はOR検索)までお陰様で問題なく実装することができました。この状態にページ送り機能を追加したいです
3
3
  https://teratail.com/questions/119008
4
4
 
5
- どなたか解決策をご教示いただけますと幸いです。
6
- 何卒よろしくお願い申し上げます。
7
-
8
- **●問題点**
9
- ・絞り込まなければ、ページ送りは問題なく動作可能
10
- ![イメージ説明](5ca1efb37a8c130ed2e313287ad75399.png)
11
-
12
- ・絞り込みをすると、ページ送りのデフォルト表示件数(例の場合は3件)が無視され表示される
13
- ![イメージ説明](856fd6406eb5f8cba7d4fbca328ae561.png)
14
-
15
- ・リセットボタンを押すと、ページ送りのデフォルト表示件数(例の場合は3件)が無視され表示される
16
- ![イメージ説明](16410cec900f5d9ade0cbc435cbd08ee.png)
17
-
18
5
  **●実現したいこと**
6
+ ・絞り込み結果が3件以下の場合はページャーは非表示にしたい
7
+ ・ページを開いたときはデフォルトで3件表示にしたい(チェックボックスまたはリセットボタンをクリック後に3件表示になるよう調整済み)
19
- 絞り込みまたはリセット後もページ送りのデフォルト表示件数(例の場合は3件)維持したまま表示しページ送をしたい
8
+ えば「a-1」「a-2」チェックボックス選択した場合「1,3,4,6,7,9,10,12」が絞込まれます。
9
+ 「1,3,4」→ページ送り→「6,7,9」→ページ送り→「10,12」
10
+ 「10,12」→ページ戻し→「6,7,9」ページ戻し→「1,3,4」
11
+ となるようにしたい
20
12
 
21
- ```
22
- <body>
23
- <form>
24
- <div id="select">
25
- <!--all(ページリロード)ボタン-->
26
- <input type="button" value="選択を解除する" onclick="allselect()">
27
-
28
- <!--検索-->
29
- <div id="category1">
30
- <label for="a-1">
31
- <input type="checkbox" id="a-1">
13
+ https://codepen.io/anon/pen/PvXrZZ
32
- a-1</label>
33
- <label for="a-2">
34
- <input type="checkbox" id="a-2">
35
- a-2</label>
36
- <label for="a-3">
37
- <input type="checkbox" id="a-3">
38
- a-3</label>
39
- </div>
40
- <div id="category2">
41
- <label for="b-1">
42
- <input type="checkbox" id="b-1">
43
- b-1</label>
44
- <label for="b-2">
45
- <input type="checkbox" id="b-2">
46
- b-2</label>
47
- <label for="b-3">
48
- <input type="checkbox" id="b-3">
49
- b-3</label>
50
- </div>
51
- <div id="category3">
52
- <label for="c-1">
53
- <input type="checkbox" id="c-1">
54
- c-1</label>
55
- <label for="c-2">
56
- <input type="checkbox" id="c-2">
57
- c-2</label>
58
- <label for="c-3">
59
- <input type="checkbox" id="c-3">
60
- c-3</label>
61
- </div>
62
- </div>
63
- </form>
64
14
 
65
- <!--検索結果-->
15
+ どなたか方法をご教示いただけますと幸いです。
66
- <div class="result">
67
- <ul>
68
- <li class="a-1 b-2 c-3">a-1 b-2 c-3</li>
69
- <li class="a-3 b-1 c-2">a-3 b-1 c-2</li>
70
- <li class="a-2 b-3 c-1">a-2 b-3 c-1</li>
71
- <li class="a-1 b-2 c-3">a-1 b-2 c-3</li>
72
- <li class="a-3 b-1 c-2">a-3 b-1 c-2</li>
73
- <li class="a-2 b-3 c-1">a-2 b-3 c-1</li>
74
- </ul>
16
+ 何卒よろしくお願い申し上げます。
75
- <div class="pager"></div>
76
- </div>
77
- <script>
78
- $(function() {
79
- $('.result ul li').pagination({
80
- pager : $('.pager'),
81
- prevText : '<',
82
- nextText : '>',
83
- firstText : '≪',
84
- lastText : '≫',
85
- viewNum : 3,
86
- pagerNum : 3,
87
- ellipsis : false,
88
- linkInvalid : true,
89
- goTop : true,
90
- firstLastNav : true,
91
- prevNextNav : false
92
- });
93
- });
94
- </script>
95
- <script>
96
- function allselect() {
97
- $('.result ul li').show();
98
- $('#select input[type="checkbox"]').prop('checked', false);
99
- }
100
- </script>
101
- </body>
102
- ```
103
-
104
- ```
105
- $(function () {
106
- $('[type=checkbox]').on('change', function () {
107
- if ($('#category1,#category2,#category3').find('[type=checkbox]:checked').length == 0) {
108
- $('.result ul li').show();
109
- } else {
110
- var myList = [];
111
- ["category1", "category2", "category3"].forEach(function (x) {
112
- if ($('#' + x + ' [type=checkbox]:checked').length > 0) {
113
- myList.push($('#' + x + ' [type=checkbox]:checked').map(function () {
114
- return '.' + $(this).attr('id');
115
- }).get());
116
- }
117
- });
118
- var classList = [];
119
- for (var i = 0; i < myList.length; i++) {
120
- if (classList.length == 0) classList = myList[i];
121
- if (i >= myList.length - 1) break;
122
- var tmp = [];
123
- for (var j = 0; j < classList.length; j++) {
124
- for (var k = 0; k < myList[i + 1].length; k++) {
125
- tmp.push(classList[j] + myList[i + 1][k]);
126
- }
127
- }
128
- classList = tmp;
129
- }
130
-
131
- $('.result ul li').hide().filter(classList.join(",")).show();
132
- }
133
- }).eq(0).trigger('change');
134
-
135
-
136
- $("input[type=checkbox]").change(function () {
137
- $("input[type=checkbox]").each(function () {
138
- if ($(this).is(":checked")) {
139
- $(this).parent().addClass("selected");
140
- } else {
141
- $(this).parent().removeClass("selected");
142
- }
143
- });
144
- });
145
-
146
-
147
- });
148
- ```
149
- ```
150
- $.fn.pagination = function(config) {
151
- // オプション
152
- var o = $.extend({
153
- pager : $('.pager'),
154
- prevText : 'prev',
155
- nextText : 'next',
156
- firstText : 'first',
157
- lastText : 'last',
158
- ellipsisText : '…',
159
- viewNum : 3,
160
- pagerNum : 3,
161
- ellipsis : true,
162
- linkInvalid : false,
163
- goTop : true,
164
- firstLastNav : true,
165
- prevNextNav : true
166
- }, config);
167
-
168
- // セレクタ
169
- var $element = $(this);
170
- var $pager = o.pager;
171
- if(o.ellipsis){
172
- var $ellipsisFirst= $('<span class="ellipsis"/>').text(o.ellipsisText);
173
- var $ellipsisLast= $('<span class="ellipsis"/>').text(o.ellipsisText);
174
- }
175
-
176
- // 値取得
177
- var tatalItemNum =$element.length;
178
- var tatalpageNum = Math.ceil(tatalItemNum /o.viewNum);
179
- var ellipsisFlag = false;
180
-
181
- // 変数設定
182
- var currentIndex = 0;
183
-
184
- // 省略記号フラグ判定
185
- if(tatalpageNum > o.pagerNum) { ellipsisFlag = true;}
186
-
187
- // ページャーの生成
188
- for (var i=0; i < tatalpageNum; i++) {
189
- $('<span/>').text(i + 1).appendTo($pager);
190
- };
191
- if(o.firstLastNav){
192
- $('<span class="prev"/>').text(o.prevText).prependTo($pager);
193
- $('<span class="next"/>').text(o.nextText).appendTo($pager);
194
- }
195
- if(o.prevNextNav){
196
- $('<span class="first"/>').text(o.firstText).prependTo($pager);
197
- $('<span class="last"/>').text(o.lastText).appendTo($pager);
198
- }
199
- var $pagerInner = $pager.find('span').not('.prev, .next, .first, .last');
200
-
201
- // コンテンツの初期表示
202
- $element.hide();
203
- for (var i=0; i < o.viewNum; i++) {
204
- $($element[i]).show();
205
- };
206
-
207
- // ページャーの初期表示
208
- $pagerInner.hide();
209
- for (var i=0; i < o.pagerNum; i++) {
210
- $($pagerInner[i]).show();
211
- };
212
- $($pagerInner[0]).addClass('current');
213
- if (o.linkInvalid) {
214
- $('.prev').addClass('invalid');
215
- $('.first').addClass('invalid');
216
- }
217
- if(o.ellipsis) {
218
- if(ellipsisFlag){
219
- if(tatalpageNum - o.pagerNum > 1) {
220
- $($pagerInner[tatalpageNum-1]).before(function() {
221
- return $ellipsisLast;
222
- });
223
- }
224
- $($pagerInner[tatalpageNum-1]).show();
225
- }
226
- }
227
-
228
- // 最初のボタンをクリック
229
- $('.first').on('click', function(){
230
- var current = 0;
231
- if(currentIndex == 0){
232
- if (o.linkInvalid) {
233
- return false;
234
- }
235
- }
236
- change(current);
237
- });
238
-
239
- // 最後のボタンをクリック
240
- $('.last').on('click', function(){
241
- var current = tatalpageNum - 1;
242
- if(currentIndex == $pagerInner.length-1){
243
- if (o.linkInvalid) {
244
- return false;
245
- }
246
- }
247
- change(current);
248
- });
249
-
250
- // 前のボタンをクリック
251
- $('.prev').on('click', function(){
252
- var current = currentIndex - 1;
253
- if(currentIndex == 0){
254
- if (o.linkInvalid) {
255
- return false;
256
- } else {
257
- current = currentIndex;
258
- }
259
- }
260
- change(current);
261
- });
262
-
263
- // 次のボタンをクリック
264
- $('.next').on('click', function(){
265
- var current = currentIndex + 1;
266
- if(currentIndex == $pagerInner.length-1){
267
- if (o.linkInvalid) {
268
- return false;
269
- } else {
270
- current = currentIndex;
271
- }
272
- }
273
- change(current);
274
- });
275
-
276
- // 番号をクリック
277
- $pagerInner.each(function (current) {
278
- $(this).on('click', function(){
279
- if($(this).hasClass('current')){
280
- if (o.linkInvalid) {
281
- return false;
282
- }
283
- }
284
- change(current);
285
- });
286
- });
287
-
288
- // 切り替え実行
289
- var change = function (current) {
290
- // コンテンツの表示
291
- $element.hide();
292
- for(var i = (current * o.viewNum) ; i < ((current + 1) * o.viewNum) ; i++){
293
- $($element[i]).show();
294
- }
295
- // ページャーの表示
296
- $pagerInner.hide();
297
- if(o.ellipsis) {
298
- if(ellipsisFlag){
299
- $ellipsisFirst.remove();
300
- $ellipsisLast.remove();
301
- }
302
- }
303
- var num = current -1;
304
- if(num > (tatalpageNum - o.pagerNum)){
305
- num = tatalpageNum - o.pagerNum;
306
- }
307
- for(var i = num ; i < (num + o.pagerNum) ; i++){
308
- $($pagerInner[i]).show();
309
- };
310
- // 省略記号の表示
311
- if(o.ellipsis) {
312
- if(ellipsisFlag){
313
- // 前の省略記号
314
- $($pagerInner[0]).show();
315
- if(num > 1){
316
- $($pagerInner[0]).after(function() {
317
- return $ellipsisFirst;
318
- });
319
- }
320
- // 後ろの省略記号
321
- if(num < (tatalpageNum - o.pagerNum -1)) {
322
- $($pagerInner[tatalpageNum -1]).before(function() {
323
- return $ellipsisLast;
324
- });
325
- }
326
- $($pagerInner[tatalpageNum -1]).show();
327
- }
328
- }
329
- // 現在位置設定
330
- currentIndex = current;
331
- // デザイン
332
- $pagerInner.removeClass('current');
333
- $($pagerInner[current]).addClass('current');
334
- if (o.linkInvalid) {
335
- if(current == 0 ) {
336
- $('.prev').addClass('invalid');
337
- $('.first').addClass('invalid');
338
- } else {
339
- $('.prev').removeClass('invalid');
340
- $('.first').removeClass('invalid');
341
- }
342
- if(current == tatalpageNum - 1 ) {
343
- $('.next').addClass('invalid');
344
- $('.last').addClass('invalid');
345
- } else {
346
- $('.next').removeClass('invalid');
347
- $('.last').removeClass('invalid');
348
- }
349
- }
350
- if(o.goTop){
351
- $('html,body').scrollTop(0);
352
- }
353
- }
354
- }
355
- ```