새소식

반응형
JavaScript/JQuery

DataTables columns search 기능 구현

  • -
반응형

datatables 를 사용하면서 각 컬럼마다 검색 기능이 필요하여 구현하게 되었다.

// html <table id="manager-mst-view-table" class="table table-hover table-striped table-bordered" </table> // javascript $('#manager-mst-view-table').DataTable({ searching : true, initComplete: function() { let api = this.api(); $('#manager-mst-view-table thead tr') .clone(true) .addClass('filters') .appendTo('#manager-mst-view-table thead'); //columns 들의 eq(0) 인 head 들만 반복한다. api.columns().eq(0).each(function(colIdx){ const cell = $('.filters th').eq($(api.column(colIdx).header()).index()); const title = $(cell).text(); if($(api.column(colIdx).header()).index() >= 0){ $(cell).html('<input type="text" placeholder="' + title + '" />'); } $('input',$('.filters th').eq($(api.column(colIdx).header()).index())) .off('keyup change') .on('change', function(e){ $(this).attr('title', $(this).val()); var cursorPosition = this.selectionStart; api.column(colIdx).search(this.value != '' ? this.value : '').draw(); }) .on('keyup', function(e){ e.stopPropagation(); $(this).trigger('change'); $(this).focus()[0].setSelectionRange(this.selectionStart, this.selectionEnd); }); }); } })

 

initComplete: function() {}

테이블 및 데이터가 완전히 초기화된 이후에 실행되는 콜백 함수이다.

쉽게 말해 테이블이 모두 그려지고 난 다음에 실행되는 함수이다.

 

this.api()

DataTables 의 API 함수

 

$('#manager-mst-view-table thead tr') .clone(true) .addClass('filters') .appendTo('#manager-mst-view-table thead');

appendTo 를 통해 #manager-mst-view-table thead tr 를 #manager-mst-view-table thead Element의 제일 마지막에 추가된다.

 

 

$('input',$('.filters th').eq($(api.column(colIdx).header()).index())) ...

input 목록 중 추가한 .filters 의 th의 input 을 찾아 on event 를 추가한다.

keyup 이벤트를 통해 change 이벤트를 호출하는 trigger를 사용한다.

change 에서 colIdx 의 위치 column의 search 를 통해 검색한다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.