2017-02-09 7 views
1

Я пытаюсь сделать мой фильтр работать с данными json с сервера, кто-то может помочь мне сделать это?DataTables с (фильтром) от данных json

мне нужен фильтр по местам: Все, EUA, Китай, Испания

Я использую: jquery.dataTables.js от: 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:

$(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(); 
    } 

}); 

Так в основном вы сообщите ВЫБЕРИТЕ элемент ждать его значение должно быть изменено. Чтобы показать ВСЕ, параметр .search() установлен в пустую строку, которая вернет ALL. В противном случае выпадающее меню инициирует поиск таблицы в столбце (1) с выбранным VALUE (не текстом!) Вашего SELECT и перерисовывает таблицу.

Примечание: Я также изменил свойства свойства вашего SELECT, поскольку они были неправильными в начале.

DataTables Документация по столбцу(). Search() можно найти HERE.

+2

'if (this.value ===" Все "|| this.value ===" Фильтровать по ")' будет лучше. –

+1

Это правда, я пропустил это. Ну, в принципе, было бы немного «чище» просто удалить опцию «Фильтровать по», так как это не реальный вариант. Я бы добавил метку к элементу SELECT и первым элементом был «Все». Прямо сейчас, выбрав «Фильтр по», вы получите 0 результатов. Обновленная скрипка: http://jsfiddle.net/f7debwj2/1/ –

+0

спасибо, это то, что я ищу, большое спасибо, только 1 последний вопрос, я не знаю, почему, когда я выбираю значение в своем коде , значение идет в окно поиска, это любой способ заставить его не туда попасть? самая забавная часть на jsfiddle не произойдет, но локально в моем коде произойдет – Raduken

 Смежные вопросы

  • Нет связанных вопросов^_^