Jquery 如何筛选多个列,但修改其中一个列的输入?
我的表是本地的,数据是从HTML表读取的。我尝试在所有表上使用单个外部输入作为过滤器,这非常有效: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
$('.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