質問編集履歴

4

修正

2020/03/20 14:48

投稿

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

3

2020/03/20 14:48

投稿

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

2

概要変更

2019/06/02 14:58

投稿

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

1

概要を変更いたしました

2019/06/02 11:56

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,709 +1,31 @@
1
1
  初めまして。JS初心者です。
2
2
 
3
- 下記を参考にjQueryの絞り込み検索(カテゴリ間はAND検索、カテゴリ内はOR検索)までお陰様で問題なく実装することができましたが、ページ送り機能を併用したところ、動作に不具合が生じました。(ちなみにページ送り機能のJSも拾です
3
+ 下記サイトを参考にjQueryの絞り込み検索(カテゴリ間はAND検索、カテゴリ内はOR検索)までお陰様で問題なく実装することができました。この状態にページ送り機能を追加したいです
4
4
 
5
5
  https://teratail.com/questions/119008
6
6
 
7
7
 
8
8
 
9
- どなか解決策をご教示ただけます幸いです。
9
+ **●実現したい**
10
10
 
11
+ ・絞り込み結果が3件以下の場合はページャーは非表示にしたい
12
+
13
+ ・ページを開いたときはデフォルトで3件表示にしたい(チェックボックスまたはリセットボタンをクリック後に3件表示になるよう調整済み)
14
+
15
+ ・例えば「a-1」「a-2」のチェックボックスを選択した場合、「1,3,4,6,7,9,10,12」が絞り込まれます。
16
+
17
+ 「1,3,4」→ページ送り→「6,7,9」→ページ送り→「10,12」
18
+
19
+ 「10,12」→ページ戻し→「6,7,9」ページ戻し→「1,3,4」
20
+
11
- 何卒くお願申し上げます。
21
+ となるうに
12
22
 
13
23
 
14
24
 
15
- **●問題点**
16
-
17
- ・絞り込まなければ、ページ送りは問題なく動作可能
18
-
19
- ![イメージ説明](5ca1efb37a8c130ed2e313287ad75399.png)
25
+ https://codepen.io/anon/pen/PvXrZZ
20
26
 
21
27
 
22
28
 
23
- ・絞り込みをす、ページ送りのデフォルト表示件数(例の場合は3件)が無視され表示される
29
+ どなたか方法ご教示いただけますと幸いです。
24
30
 
25
- ![イメージ説明](856fd6406eb5f8cba7d4fbca328ae561.png)
26
-
27
-
28
-
29
- ・リセットボタンを押すと、ページ送りのデフォルト表示件数(例の場合は3件)が無視され表示される
30
-
31
- ![イメージ説明](16410cec900f5d9ade0cbc435cbd08ee.png)
32
-
33
-
34
-
35
- **●実現したいこと**
36
-
37
- 絞り込みまたはリセット後もページ送りのデフォルト表示件数(例の場合は3件)を維持したまま表示し、ページ送りをしたい
38
-
39
-
40
-
41
- ```
42
-
43
- <body>
44
-
45
- <form>
46
-
47
- <div id="select">
48
-
49
- <!--all(ページリロード)ボタン-->
50
-
51
- <input type="button" value="選択を解除する" onclick="allselect()">
52
-
53
-
54
-
55
- <!--検索-->
56
-
57
- <div id="category1">
58
-
59
- <label for="a-1">
60
-
61
- <input type="checkbox" id="a-1">
62
-
63
- a-1</label>
64
-
65
- <label for="a-2">
66
-
67
- <input type="checkbox" id="a-2">
68
-
69
- a-2</label>
70
-
71
- <label for="a-3">
72
-
73
- <input type="checkbox" id="a-3">
74
-
75
- a-3</label>
76
-
77
- </div>
78
-
79
- <div id="category2">
80
-
81
- <label for="b-1">
82
-
83
- <input type="checkbox" id="b-1">
84
-
85
- b-1</label>
86
-
87
- <label for="b-2">
88
-
89
- <input type="checkbox" id="b-2">
90
-
91
- b-2</label>
92
-
93
- <label for="b-3">
94
-
95
- <input type="checkbox" id="b-3">
96
-
97
- b-3</label>
98
-
99
- </div>
100
-
101
- <div id="category3">
102
-
103
- <label for="c-1">
104
-
105
- <input type="checkbox" id="c-1">
106
-
107
- c-1</label>
108
-
109
- <label for="c-2">
110
-
111
- <input type="checkbox" id="c-2">
112
-
113
- c-2</label>
114
-
115
- <label for="c-3">
116
-
117
- <input type="checkbox" id="c-3">
118
-
119
- c-3</label>
120
-
121
- </div>
122
-
123
- </div>
124
-
125
- </form>
126
-
127
-
128
-
129
- <!--検索結果-->
130
-
131
- <div class="result">
132
-
133
- <ul>
134
-
135
- <li class="a-1 b-2 c-3">a-1 b-2 c-3</li>
136
-
137
- <li class="a-3 b-1 c-2">a-3 b-1 c-2</li>
138
-
139
- <li class="a-2 b-3 c-1">a-2 b-3 c-1</li>
140
-
141
- <li class="a-1 b-2 c-3">a-1 b-2 c-3</li>
142
-
143
- <li class="a-3 b-1 c-2">a-3 b-1 c-2</li>
144
-
145
- <li class="a-2 b-3 c-1">a-2 b-3 c-1</li>
146
-
147
- </ul>
31
+ 何卒よろしくお願い申し上げます。
148
-
149
- <div class="pager"></div>
150
-
151
- </div>
152
-
153
- <script>
154
-
155
- $(function() {
156
-
157
- $('.result ul li').pagination({
158
-
159
- pager : $('.pager'),
160
-
161
- prevText : '<',
162
-
163
- nextText : '>',
164
-
165
- firstText : '≪',
166
-
167
- lastText : '≫',
168
-
169
- viewNum : 3,
170
-
171
- pagerNum : 3,
172
-
173
- ellipsis : false,
174
-
175
- linkInvalid : true,
176
-
177
- goTop : true,
178
-
179
- firstLastNav : true,
180
-
181
- prevNextNav : false
182
-
183
- });
184
-
185
- });
186
-
187
- </script>
188
-
189
- <script>
190
-
191
- function allselect() {
192
-
193
- $('.result ul li').show();
194
-
195
- $('#select input[type="checkbox"]').prop('checked', false);
196
-
197
- }
198
-
199
- </script>
200
-
201
- </body>
202
-
203
- ```
204
-
205
-
206
-
207
- ```
208
-
209
- $(function () {
210
-
211
- $('[type=checkbox]').on('change', function () {
212
-
213
- if ($('#category1,#category2,#category3').find('[type=checkbox]:checked').length == 0) {
214
-
215
- $('.result ul li').show();
216
-
217
- } else {
218
-
219
- var myList = [];
220
-
221
- ["category1", "category2", "category3"].forEach(function (x) {
222
-
223
- if ($('#' + x + ' [type=checkbox]:checked').length > 0) {
224
-
225
- myList.push($('#' + x + ' [type=checkbox]:checked').map(function () {
226
-
227
- return '.' + $(this).attr('id');
228
-
229
- }).get());
230
-
231
- }
232
-
233
- });
234
-
235
- var classList = [];
236
-
237
- for (var i = 0; i < myList.length; i++) {
238
-
239
- if (classList.length == 0) classList = myList[i];
240
-
241
- if (i >= myList.length - 1) break;
242
-
243
- var tmp = [];
244
-
245
- for (var j = 0; j < classList.length; j++) {
246
-
247
- for (var k = 0; k < myList[i + 1].length; k++) {
248
-
249
- tmp.push(classList[j] + myList[i + 1][k]);
250
-
251
- }
252
-
253
- }
254
-
255
- classList = tmp;
256
-
257
- }
258
-
259
-
260
-
261
- $('.result ul li').hide().filter(classList.join(",")).show();
262
-
263
- }
264
-
265
- }).eq(0).trigger('change');
266
-
267
-
268
-
269
-
270
-
271
- $("input[type=checkbox]").change(function () {
272
-
273
- $("input[type=checkbox]").each(function () {
274
-
275
- if ($(this).is(":checked")) {
276
-
277
- $(this).parent().addClass("selected");
278
-
279
- } else {
280
-
281
- $(this).parent().removeClass("selected");
282
-
283
- }
284
-
285
- });
286
-
287
- });
288
-
289
-
290
-
291
-
292
-
293
- });
294
-
295
- ```
296
-
297
- ```
298
-
299
- $.fn.pagination = function(config) {
300
-
301
- // オプション
302
-
303
- var o = $.extend({
304
-
305
- pager : $('.pager'),
306
-
307
- prevText : 'prev',
308
-
309
- nextText : 'next',
310
-
311
- firstText : 'first',
312
-
313
- lastText : 'last',
314
-
315
- ellipsisText : '…',
316
-
317
- viewNum : 3,
318
-
319
- pagerNum : 3,
320
-
321
- ellipsis : true,
322
-
323
- linkInvalid : false,
324
-
325
- goTop : true,
326
-
327
- firstLastNav : true,
328
-
329
- prevNextNav : true
330
-
331
- }, config);
332
-
333
-
334
-
335
- // セレクタ
336
-
337
- var $element = $(this);
338
-
339
- var $pager = o.pager;
340
-
341
- if(o.ellipsis){
342
-
343
- var $ellipsisFirst= $('<span class="ellipsis"/>').text(o.ellipsisText);
344
-
345
- var $ellipsisLast= $('<span class="ellipsis"/>').text(o.ellipsisText);
346
-
347
- }
348
-
349
-
350
-
351
- // 値取得
352
-
353
- var tatalItemNum =$element.length;
354
-
355
- var tatalpageNum = Math.ceil(tatalItemNum /o.viewNum);
356
-
357
- var ellipsisFlag = false;
358
-
359
-
360
-
361
- // 変数設定
362
-
363
- var currentIndex = 0;
364
-
365
-
366
-
367
- // 省略記号フラグ判定
368
-
369
- if(tatalpageNum > o.pagerNum) { ellipsisFlag = true;}
370
-
371
-
372
-
373
- // ページャーの生成
374
-
375
- for (var i=0; i < tatalpageNum; i++) {
376
-
377
- $('<span/>').text(i + 1).appendTo($pager);
378
-
379
- };
380
-
381
- if(o.firstLastNav){
382
-
383
- $('<span class="prev"/>').text(o.prevText).prependTo($pager);
384
-
385
- $('<span class="next"/>').text(o.nextText).appendTo($pager);
386
-
387
- }
388
-
389
- if(o.prevNextNav){
390
-
391
- $('<span class="first"/>').text(o.firstText).prependTo($pager);
392
-
393
- $('<span class="last"/>').text(o.lastText).appendTo($pager);
394
-
395
- }
396
-
397
- var $pagerInner = $pager.find('span').not('.prev, .next, .first, .last');
398
-
399
-
400
-
401
- // コンテンツの初期表示
402
-
403
- $element.hide();
404
-
405
- for (var i=0; i < o.viewNum; i++) {
406
-
407
- $($element[i]).show();
408
-
409
- };
410
-
411
-
412
-
413
- // ページャーの初期表示
414
-
415
- $pagerInner.hide();
416
-
417
- for (var i=0; i < o.pagerNum; i++) {
418
-
419
- $($pagerInner[i]).show();
420
-
421
- };
422
-
423
- $($pagerInner[0]).addClass('current');
424
-
425
- if (o.linkInvalid) {
426
-
427
- $('.prev').addClass('invalid');
428
-
429
- $('.first').addClass('invalid');
430
-
431
- }
432
-
433
- if(o.ellipsis) {
434
-
435
- if(ellipsisFlag){
436
-
437
- if(tatalpageNum - o.pagerNum > 1) {
438
-
439
- $($pagerInner[tatalpageNum-1]).before(function() {
440
-
441
- return $ellipsisLast;
442
-
443
- });
444
-
445
- }
446
-
447
- $($pagerInner[tatalpageNum-1]).show();
448
-
449
- }
450
-
451
- }
452
-
453
-
454
-
455
- // 最初のボタンをクリック
456
-
457
- $('.first').on('click', function(){
458
-
459
- var current = 0;
460
-
461
- if(currentIndex == 0){
462
-
463
- if (o.linkInvalid) {
464
-
465
- return false;
466
-
467
- }
468
-
469
- }
470
-
471
- change(current);
472
-
473
- });
474
-
475
-
476
-
477
- // 最後のボタンをクリック
478
-
479
- $('.last').on('click', function(){
480
-
481
- var current = tatalpageNum - 1;
482
-
483
- if(currentIndex == $pagerInner.length-1){
484
-
485
- if (o.linkInvalid) {
486
-
487
- return false;
488
-
489
- }
490
-
491
- }
492
-
493
- change(current);
494
-
495
- });
496
-
497
-
498
-
499
- // 前のボタンをクリック
500
-
501
- $('.prev').on('click', function(){
502
-
503
- var current = currentIndex - 1;
504
-
505
- if(currentIndex == 0){
506
-
507
- if (o.linkInvalid) {
508
-
509
- return false;
510
-
511
- } else {
512
-
513
- current = currentIndex;
514
-
515
- }
516
-
517
- }
518
-
519
- change(current);
520
-
521
- });
522
-
523
-
524
-
525
- // 次のボタンをクリック
526
-
527
- $('.next').on('click', function(){
528
-
529
- var current = currentIndex + 1;
530
-
531
- if(currentIndex == $pagerInner.length-1){
532
-
533
- if (o.linkInvalid) {
534
-
535
- return false;
536
-
537
- } else {
538
-
539
- current = currentIndex;
540
-
541
- }
542
-
543
- }
544
-
545
- change(current);
546
-
547
- });
548
-
549
-
550
-
551
- // 番号をクリック
552
-
553
- $pagerInner.each(function (current) {
554
-
555
- $(this).on('click', function(){
556
-
557
- if($(this).hasClass('current')){
558
-
559
- if (o.linkInvalid) {
560
-
561
- return false;
562
-
563
- }
564
-
565
- }
566
-
567
- change(current);
568
-
569
- });
570
-
571
- });
572
-
573
-
574
-
575
- // 切り替え実行
576
-
577
- var change = function (current) {
578
-
579
- // コンテンツの表示
580
-
581
- $element.hide();
582
-
583
- for(var i = (current * o.viewNum) ; i < ((current + 1) * o.viewNum) ; i++){
584
-
585
- $($element[i]).show();
586
-
587
- }
588
-
589
- // ページャーの表示
590
-
591
- $pagerInner.hide();
592
-
593
- if(o.ellipsis) {
594
-
595
- if(ellipsisFlag){
596
-
597
- $ellipsisFirst.remove();
598
-
599
- $ellipsisLast.remove();
600
-
601
- }
602
-
603
- }
604
-
605
- var num = current -1;
606
-
607
- if(num > (tatalpageNum - o.pagerNum)){
608
-
609
- num = tatalpageNum - o.pagerNum;
610
-
611
- }
612
-
613
- for(var i = num ; i < (num + o.pagerNum) ; i++){
614
-
615
- $($pagerInner[i]).show();
616
-
617
- };
618
-
619
- // 省略記号の表示
620
-
621
- if(o.ellipsis) {
622
-
623
- if(ellipsisFlag){
624
-
625
- // 前の省略記号
626
-
627
- $($pagerInner[0]).show();
628
-
629
- if(num > 1){
630
-
631
- $($pagerInner[0]).after(function() {
632
-
633
- return $ellipsisFirst;
634
-
635
- });
636
-
637
- }
638
-
639
- // 後ろの省略記号
640
-
641
- if(num < (tatalpageNum - o.pagerNum -1)) {
642
-
643
- $($pagerInner[tatalpageNum -1]).before(function() {
644
-
645
- return $ellipsisLast;
646
-
647
- });
648
-
649
- }
650
-
651
- $($pagerInner[tatalpageNum -1]).show();
652
-
653
- }
654
-
655
- }
656
-
657
- // 現在位置設定
658
-
659
- currentIndex = current;
660
-
661
- // デザイン
662
-
663
- $pagerInner.removeClass('current');
664
-
665
- $($pagerInner[current]).addClass('current');
666
-
667
- if (o.linkInvalid) {
668
-
669
- if(current == 0 ) {
670
-
671
- $('.prev').addClass('invalid');
672
-
673
- $('.first').addClass('invalid');
674
-
675
- } else {
676
-
677
- $('.prev').removeClass('invalid');
678
-
679
- $('.first').removeClass('invalid');
680
-
681
- }
682
-
683
- if(current == tatalpageNum - 1 ) {
684
-
685
- $('.next').addClass('invalid');
686
-
687
- $('.last').addClass('invalid');
688
-
689
- } else {
690
-
691
- $('.next').removeClass('invalid');
692
-
693
- $('.last').removeClass('invalid');
694
-
695
- }
696
-
697
- }
698
-
699
- if(o.goTop){
700
-
701
- $('html,body').scrollTop(0);
702
-
703
- }
704
-
705
- }
706
-
707
- }
708
-
709
- ```