2017-02-09 12 views
1

私のフィルタがサーバーのjsonデータで動作するようにしようとしていますが、誰かがこれを行うのを助けることができますか?DataTables with json data

は私が場所によってフィルタを必要とする:すべて、EUA、中国、スペイン

私が使用しています

https://datatables.net

HTML::

<div class=" dashboard"> 
    <div class="col-md-8 no-padding"> 
    <div class="form-group col-md-4 no-padding"> 
     <select class="form-control" id="sel1" > 
     <option value="Filter by">Filter by country </option> 
     <option value="All">All</option> 
     <option value="First name">China</option> 
     <option value="Last name">EUA</option> 
     <option value="Last name">Spain</option> 
     </select> 
    </div> 
    </div> 

<br> 
<br> 
<table id="example" class="display" width="100%" cellspacing="0"> 
<thead> 
     <tr> 
      <th>First name</th> 
      <th>Place</th> 

     </tr> 
    </thead> 
</table> 

jqueryの:

からjquery.dataTables.js
$(document).ready(function() { 
     var dt = $('#example').dataTable(); 
     dt.fnDestroy(); 
    }); 

    $(document).ready(function() { 
    var url = 'http://www.json-generator.com/api/json/get/crcCiZXZfm?indent=2'; 
    var table = $('#example').DataTable({ 
     ajax: url, 
    columns: [ 
     { data: 'name' }, 
     { data: 'place' } 
    ] 
    }); 
}); 

jsfiddle: http://jsfiddle.net/ntcwust8/120/

+1

あなたが最初の名前でフィルタを選択したときに起こるとは思わないが、すべてのレコードはファーストネームを持っています... –

+0

申し訳ありませんが、私は私の質問を改革私はフィルタが場所ごとに動作する必要があるので、ちょうど中国からのデータを表示するスペインを選択すると、スペインなどのデータを表示する...、理解できますか?ありがとうございました。 – Raduken

+1

これを確認してください:https://datatables.net/examples/api/multi_filter.html –

答えて

1

http://jsfiddle.net/f7debwj2/

を追加しましたあなたのdocument.readyに次のコードを():

$('#sel1').change(function() { 

    if (this.value === "All") { 
    table 
     .columns(1) 
     .search('') 
     .draw(); 
    } 

    else { 
    table 
     .columns(1) 
     .search(this.value) 
     .draw(); 
    } 

}); 

だから基本的には、その値が変更されるのを待つためにあなたのSELECT要素を教えてください。 ALLを表示するために、.search()パラメータは空の文字列に設定され、ALLを返します。それ以外の場合、ドロップダウンは、SELECTの選択されたVALUE(テキストではありません)を使用して列(1)の表検索をトリガーし、表を再描画します。

注::最初は間違っていたので、SELECTの値プロパティも変更しました。

DataTables column()。search()のドキュメントはHEREです。

+2

'if(this.value ===" All "|| this.value ===" Filter by ")'が良いでしょう。 –

+1

それは本当です、私はそれを逃した。基本的には、実際の選択肢ではないので、単に「フィルタ」オプションを削除するのはちょっと「クリーン」です。 SELECT要素にラベルを追加し、最初の項目を「すべて」にします。今のところ、 "Filter by"を選択すると明らかに0の結果が返されます。フィドルが更新されました:http://jsfiddle.net/f7debwj2/1/ –

+0

ありがとうございます、これは私が探しているものです。大変ありがとうございます。最後の1つの質問です。私のコードで値を選択する理由はわかりません。 、価値は検索ボックスに行く、それはそこに行かないようにする方法は何ですか?面白い部分はjsfiddleで起こっていないが、私のコードではローカルに発生する – Raduken