2017-11-08 25 views
0

DataTableをプログラムで検索して 'アクティブ'という文字列を検索するのに問題があります。 'ActiveTest'と表を変更した場合、fnFilterは正常に動作し、正しくフィルタリングします。しかし、文字列 'Active'では機能しないようです。誰にも理由は何ですか?fnFilterの値 'working' not working

また、検索入力ボックスにその値を表示せずに特定の値を持つ列のみにテーブルを絞り込むプログラム的な方法はありますか?私はむしろそれをフィルタリングして、ユーザーが検索ボックスを使用してさらにフィルタリングすることを許可する "Show Active Only"と言うページにチェックボックスを付けることにします。ここで

は、私は、テーブル今

$('#selector').dataTable().fnFilter('Active'); 

これは、「アクティブ」を示すために検索入力ボックスの原因を絞り込むしようとしていますが、何も起こらない方法です。これはテーブル内の他の文字列でうまく動作しますが、文字列 'Active'は予約されているかのように見えます。検索ボックス 'Active'に手動で入力しても、それでもフィルタリングは行われません。

スニペットは

$('#mytable').DataTable(); 
 

 
$('#testbutton').on('click', function(e) { 
 
    $('#mytable').dataTable().fnFilter('Active'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdn.datatables.net/v/dt/dt-1.10.16/datatables.min.js"></script> 
 
<table id="mytable"> 
 
    <thead> 
 
    <tr> 
 
     <th>name</th> 
 
     <th>status</th> 
 
    </tr> 
 
    </thead> 
 
    <tbody> 
 
    <tr> 
 
     <td>john doe</td> 
 
     <td>Active</td> 
 
    </tr> 
 
    <tr> 
 
     <td>jane doe</td> 
 
     <td>Inactive</td> 
 
    </tr> 
 
    </tbody> 
 
</table> 
 

 
<input type="button" id="testbutton" value="filter" />

はありがとうござい例として提供しました!

答えて

1

「非アクティブ」という単語には「アクティブ」という文字列が含まれ、デフォルトではfnFilter()は単語全体のみを検索し、大文字と小文字を区別しない検索を行います。代わりに「非アクティブ」のテキストを変更することでこれを確認することができます

$('#mytable').DataTable(); 
 

 
$('#testbutton').on('click', function(e) { 
 
    $('#mytable').dataTable().fnFilter('Active'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdn.datatables.net/v/dt/dt-1.10.16/datatables.min.js"></script> 
 
<table id="mytable"> 
 
    <thead> 
 
    <tr> 
 
     <th>name</th> 
 
     <th>status</th> 
 
    </tr> 
 
    </thead> 
 
    <tbody> 
 
    <tr> 
 
     <td>john doe</td> 
 
     <td>Active</td> 
 
    </tr> 
 
    <tr> 
 
     <td>jane doe</td> 
 
     <td>Foo</td> 
 
    </tr> 
 
    </tbody> 
 
</table> 
 

 
<input type="button" id="testbutton" value="filter" />

あなたがこの問題を解決するには、少なくとも2つのオプションがあります。

  • あなたは、大文字と小文字を区別マッチングを有効にすることができます(第6パラメータ、ブール値)
  • regex(3番目のパラメータ、ブール値)を有効にし、単語境界を使用して単語全体のみを一致させることができます
+0

チャームのように働いた!検索ボックスに「アクティブ」というテキストを表示せずにフィルタリングする方法は何ですか?そうすれば、それはまだフィルタリングされていますが、テキスト入力は空白になっていますので、もっとフィルタをかけることができますか? – Phil

+0

DataTableのデフォルトの検索入力を使用すると、これは組み込みの機能です。デフォルトの入力を無効にし、フィルタリングをトリガーする独自の入力を追加することをお勧めします。 – Connum

+0

それを持って、ありがとう! – Phil