数据表还是搜索?

时间:2016-04-05 14:58:17

标签: javascript search datatables

我正在使用DataTables jQuery插件。

如果某个术语显示在两个特定列中的至少一个列中,我想搜索该表。

以下当前代码仅查找单词"word"位于两个列中的行。我需要找到列中 列的行。

$table.DataTable().columns([0,1]).search("word");

我考虑使用全局搜索并将其他列的可搜索选项设置为false,但我无法在运行时找到更改此选项的方法。

1 个答案:

答案 0 :(得分:2)

搜索所有列

搜索表格时可以使用正则表达式。

例如,下面的代码显示了所有列中包含单词AngelicaLondon的搜索结果。

var table = $('#example').DataTable();

table
    .search('Angelica|London', true, false)
    .draw();    

请参阅this jsFiddle以获取代码和演示。

搜索特定列

要搜索特定列,您可能需要使用custom search功能。

下面的代码显示了包含索引AngelicaTokyo0的表数据值中包含单词12的搜索结果。

var table = $('#example').DataTable();

var terms = ['Angelica', 'Tokyo'];    

// Convert terms to lower case
$.each(terms, function(index, value){
   terms[index] = value.toLowerCase();
});

// Enable custom search
$.fn.dataTable.ext.search.push(
   function (settings, data, dataIndex) {
      var isFound = false;
      $.each(data, function (index, value){         
         // Evaluate only first three data values
         if(index === 0 || index === 1 || index === 2){
            // Convert data to lower case
            value = value.toLowerCase();
            $.each(terms, function(termIndex, termValue){
               // If data contains the term
               if (value.indexOf(termValue) !== -1) {
                  isFound = true;
               }
               return !isFound;
            });
         }

         return !isFound;
      });

      return isFound;
   }
);

// Perform search
table.draw();

// Disable custom search
$.fn.dataTable.ext.search.pop();

请参阅this jsFiddle以获取代码和演示。