2015-02-27 2 views
0

Я использую плагин dataTables jquery. У меня есть значение навыка как заголовок в моей таблице. Я хочу, чтобы пользователи использовали определенные навыки. Например, как показано на рисунке, я хочу найти пользователей, у которых есть умение php. Тогда я должен получить имя Джона. Для css я должен получить имя Моны. Снимок находится здесь: enter image description hereПлагин Datatables для поиска значений заголовков

ответ

1

Вы можете сделать это, внедрив собственный фильтр для данных, как описано here.

Перед фильтрацией необходимо найти индекс столбца, который вы хотите фильтровать, и затем проверить значение в каждой строке. Это может выглядеть примерно так:

<input type="text" id="skillFilter" /> 
<table id="example"> 
    <thead> 
     <tr> 
      <th>Skills</th> 
      <th>PHP</th> 
      <th>CSS</th> 
      <th>HTML</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td>John</td> 
      <td>1</td> 
      <td>0</td> 
      <td>1</td> 
     </tr> 
     <tr> 
      <td>Mona</td> 
      <td>0</td> 
      <td>1</td> 
      <td>0</td> 
     </tr> 
    </tbody> 
</table> 

сценарий:

$.fn.dataTable.ext.search.push(
    function(settings, data) { 
     if (skillFilterColumnIndex != undefined) { 
      //Get the data of each row 
      var data = data[skillFilterColumnIndex] || ""; 
      return data > 0; 
     } else { 
      return 1; 
     } 
    }); 

$("#skillFilter").change(function() { 
    var skill = $("#skillFilter").val().toLowerCase(); 
    //Find the column index with the skill to filter 
    $.each($("#example thead th"), function(index, element) { 
     if (index != 0 && element.innerHTML.toLowerCase() == skill) { 
      skillFilterColumnIndex = index; 
     } 
    }); 
    table.fnDraw(); 
}); 
+1

Я думаю, что это отличное решение, но OP должен знать, что это DataTables 1.10.x только. Для 1.9.x требуется немного другой подход. Вот рабочая скрипка для 1.10.x с кодом выше ** http: //jsfiddle.net/y9zsng2c/** – davidkonrad

+0

@davidkonrad Спасибо за то, что вы сделали скрипку из кода выше. Я не мог этого сделать :) – Shiffty

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