2015-11-19 9 views
6

特定の列に対して列の検索と通常の検索を組み合わせようとしています。DataTableで複数の列を検索するにはどうすればよいですか?

あなたはthis exampleを見れば、私は「正常な」検索して、列NamePositionを検索し、それの残りの部分を無視することができるようにしたいが、私はまだで値を選択できるようにしたいですOffice列の下部。

私はこれを使用しようとしました:

columnDefs: [{ 
    targets: [2], 
    searchable: false 
}] 

しかし、これは、列の検索を無効にします。
私はまた、複数の列にカスタム検索を書き込もうとしました:

var search = 'Software'; 
$('#example').DataTable().column(0).search(search).draw(); 
$('#example').DataTable().column(1).search(search).draw(); 

しかし、これは両方の列が検索値、代わりにそれらの1を含む行を示しています。 (発生しません)。

私もcolumns().search()を試しましたが、上記のカスタム検索と同じ結果が得られます。

個々の列の検索は有効にできますが、全体の検索では同じ列を無効にするにはどうすればよいですか?

答えて

10

あなたはcustom filterで検索/フィルタ内蔵のオーバーライドすることができます。この「通常の検索」のみNamePosition、最初の2列に適用することにより

$('.dataTables_filter input').unbind().on('keyup', function() { 
    var searchTerm = this.value.toLowerCase(); 
    $.fn.dataTable.ext.search.push(function(settings, data, dataIndex) { 
     //search only in column 1 and 2 
     if (~data[0].toLowerCase().indexOf(searchTerm)) return true; 
     if (~data[1].toLowerCase().indexOf(searchTerm)) return true; 
     return false; 
    }) 
    table.draw(); 
    $.fn.dataTable.ext.search.pop(); 
}) 

- あなたはまだ選択ボックスを働いていますフッターにフォークド・フィドル - >https://jsfiddle.net/g9gLjtjh/

関連する問題