Jquery 如何筛选多个列,但修改其中一个列的输入?

Jquery 如何筛选多个列,但修改其中一个列的输入?,jquery,datatables,Jquery,Datatables,我的表是本地的,数据是从HTML表读取的。我尝试在所有表上使用单个外部输入作为过滤器,这非常有效: $('.data-table').DataTable({ columns: [ null, null, null, null, { orderable: false } ] }); $(document).on('input', 'input.filter', function () { var searchTerm = this.value

我的表是本地的,数据是从HTML表读取的。我尝试在所有表上使用单个外部输入作为过滤器,这非常有效:

$('.data-table').DataTable({
  columns: [
    null,
    null,
    null,
    null,
    { orderable: false }
  ]
});

$(document).on('input', 'input.filter', function () {
  var searchTerm = this.value

  $('.data-table').DataTable().search(searchTerm).draw();
});
但我现在不能做的是仅在应用于第一列时修改
searchTerm
。它应该与表中的其他部分进行比较。我尝试了一个自定义搜索功能,但如果它不是我需要自定义功能的列,我不知道如何跳过它:

$.fn.dataTable.ext.search.push(function(settings, data, dataIndex) {
  var columnVal = data[0]
  var input = $('input.filter').val()

  if (input) {
    // This comparison should only apply on the first column.
    return columnVal == input.slice(1)
  } else {
    return true
  };
});
例如,当用户输入“K123”时,针对完整表的搜索或筛选应该使用“K123”,但我希望将第一列与切片输入(特别是“123”)匹配

正确的方法(无自定义过滤器)应如下所示:

var input = $('input.filter').val()

table
  .search( input )
  .column( 0 ).search( input.slice(1) )
  .draw();

但是我不能让它工作:(

数据应该是一个包含行中所有数据的数组。根据需要,您可能还需要调用splice来删除第一个数据

$.fn.dataTable.ext.search.push(function(settings, data, dataIndex){      
    var input = $('input.filter').val(), firstColumnVal = "";
    if (input) {
        firstColumnVal = input.slice(1);
    }
    var firstColumnData = data[0];
    if (!input) 
        return true;
    else 
        return firstColumnVal === firstColumnData || data.indexOf(input) > -1;   
});

是的,但我也想在表格的其他部分用相同的词搜索我不确定我是否遵循了…听起来你仍然想做一个全局搜索?那为什么还要费心在第一列上搜索?你能提供一个例子吗?谢谢你的尝试,我没有像我应该的那样解释我自己。我已经为这个问题添加了一个例子。哦,我没想到关于将该自定义函数与其余数据进行比较。这就是您在这里使用
data.indexOf(input)>-1;
对吗?但是如果与其余列的匹配是部分的呢?无论如何,非常好的指针,感谢您使用
data.filter(函数){返回s.indexOf(input)>-1;}.长度>0