検索バーに入力された検索語に完全に一致するもののみを表示しようとしています。
たとえば、ID#でフィルタリングする検索バーがあります。入力した正確な#と一致するレコードのみを表示する必要があります。
したがって、123
が入力された場合、12345
、91239
などを表示したくありません。 123
のみ。
FAQページでbRegex
に関するいくつかの情報を見ましたが、それは私にとってはうまくいきません。
問題を解決しました。ただし、完全一致を使用している列には、コンマで区切られた複数のID番号が含まれていることがあるため、完全一致検索を使用できません。
しかし、興味がある人のために、ここに答えがあります:
oTable.fnFilter( "^"+TERM+"$", COLUMN , true); //Term, Column #, RegExp Filter
これにより、列の正確な結果が得られます。
table.column(i)
.search("^" + $(this).val() + "$", true, false, true)
.draw();
すなわち。検索(入力、正規表現、スマート、caseInsen)
$(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
列ごとにbSmart
とbRegex
を設定でき、列ごとに手動の正規表現を指定できるようです。
最初から完全に一致させたい場合は、このコードを試すことができます。
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();
} );
次のように、完全一致に正規表現を使用できます。
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から次のドキュメントを確認してください。
お役に立てば幸いです!
$(document).ready(function() {
tbl = $('#example').dataTable();
tbl.fnFilter("^" + filter_value + "$");
});
どこ filter_value
は、フィルターフィールドに入力された文字列です。
Datatablesの現在のバージョンは、列単位での実際の完全一致の使用をサポートしています。
table.column(i)
.search($(this).val(), false, false, false)
.draw();
ドキュメント は各フラグを説明しています。