web-dev-qa-db-ja.com

jQuery DataTables-完全一致による列のフィルター処理

検索バーに入力された検索語に完全に一致するもののみを表示しようとしています。

たとえば、ID#でフィルタリングする検索バーがあります。入力した正確な#と一致するレコードのみを表示する必要があります。

したがって、123が入力された場合、1234591239などを表示したくありません。 123のみ。

FAQページでbRegexに関するいくつかの情報を見ましたが、それは私にとってはうまくいきません。

26
JimmyJammed

問題を解決しました。ただし、完全一致を使用している列には、コンマで区切られた複数のID番号が含まれていることがあるため、完全一致検索を使用できません。

しかし、興味がある人のために、ここに答えがあります:

oTable.fnFilter( "^"+TERM+"$", COLUMN , true); //Term, Column #, RegExp Filter
25
JimmyJammed

これにより、列の正確な結果が得られます。

 table.column(i)
 .search("^" + $(this).val() + "$", true, false, true)
 .draw();

すなわち。検索(入力、正規表現、スマート、caseInsen)

38
Neeno Xavier
$(document).ready( function() {
    $('#example').dataTable( {
        "oSearch": {"bSmart": false}
    } );
} )

BSmartオプションを使用して、falseに設定してみてください

ドキュメントから

「「bSmart」DataTablesがスマートフィルタリングメソッドを使用する場合(データの任意のポイントでWordが一致する場合)、falseの場合、これは実行されません。

更新

私はこれを見つけました:

oSettings.aoPreSearchCols[ iCol ].sSearch = "^\\s*"+'1'+"\\s*$";
oSettings.aoPreSearchCols[ iCol ].bRegex = false;
oSettings.aoPreSearchCols[ iCol ].bSmart= false;

このリンクで http://www.datatables.net/forums/discussion/4096/filtering-an-exact-match/p1

列ごとにbSmartbRegexを設定でき、列ごとに手動の正規表現を指定できるようです。

8
Keith.Abramo

最初から完全に一致させたい場合は、このコードを試すことができます。

    var table = $('#myTable').DataTable()
    $('#filterrow > th:nth-child(2) > input').on( 'keyup change', function () {
        table
        .column( $(this).parent().index()+':visible' )
        .search( "^" + this.value, true, false, true )
        .draw();
    } );
3
Tariq

次のように、完全一致に正規表現を使用できます。

var table = $('#dt').DataTable();

$('#column3_search').on('keyup', function () {
    // Note: column() accepts zero-based index meaning the index of first column is 0, second column is 1 and so on.
    // We use `2` here as we are accessing 3rd column whose index is 2.
    table.column(2)
         .search("^" + this.value + "$", true, false, true)
         .draw();
});

search関数の構文は次のとおりです。

検索(入力、正規表現、smart_search、case_insensitive)

smart searchがtrueに設定されている場合、search関数は内部で正規表現を使用するため、この場合はsmart searchを無効にします。それ以外の場合、これにより、正規表現とsearch関数で使用される表現との間に競合が生じます。

詳細については、DataTableから次のドキュメントを確認してください。

column()。search()

お役に立てば幸いです!

1
Wolverine
$(document).ready(function() {
    tbl = $('#example').dataTable();
    tbl.fnFilter("^" + filter_value + "$");
});

どこ filter_valueは、フィルターフィールドに入力された文字列です。

0
matino

Datatablesの現在のバージョンは、列単位での実際の完全一致の使用をサポートしています。

table.column(i)
.search($(this).val(), false, false, false)
.draw();

ドキュメント は各フラグを説明しています。

0
Alejandro Marin