Ast*_*aut 18 javascript jquery jquery-plugins datatables
是否可以将某个过滤器仅应用于一个数据表?我有以下过滤器功能,我正在申请文件准备,我不知道这是否是正确的程序,但作为副作用所有dataTables将受到过滤器的影响.我想仅影响$('#productTable'),但此选择器似乎没有所需的效果.
//Filter Function in Stock
//$('#productTable').
$.fn.dataTableExt.afnFiltering.push(function(oSettings, aData, iDataIndex) {
var checked = $('#instock').is(':checked');
var qntStock = 1;
var stockCol = 3;
if (!checked) {
return true;
}
if (checked && aData[stockCol] > qntStock) {
return true;
}
return false;
});
Run Code Online (Sandbox Code Playgroud)
是否可以仅对特定表应用过滤器?我该如何做到这一点?
编辑:
dataTable初始化:
var oTable = $('#productTable').dataTable({
"aoColumnDefs": [{
"sClass": "my_class",
"aTargets": [4]
}],
"bAutoWidth": false,
"iDisplayLength": 100,
"fnDrawCallback": function() {
$("td.my_class").editable(function(value, settings)
{
return(value);
},
{
indicator : 'Save...',
tooltip : 'Click to Edit...'
}
);
}
});
Run Code Online (Sandbox Code Playgroud)
Man*_*eUK 24
您可以创建一个包含过滤器的表数组 - 然后在过滤器中检查当前表是否存在于该数组中...类似于:
// setup an array of the ids of tables that should be allowed
var allowFilter = ['productTable'];
$.fn.dataTableExt.afnFiltering.push(function(oSettings, aData, iDataIndex) {
// check if current table is part of the allow list
if ( $.inArray( oSettings.nTable.getAttribute('id'), allowFilter ) == -1 )
{
// if not table should be ignored
return true;
}
var checked = $('#instock').is(':checked');
var qntStock = 1;
var stockCol = 3;
if (!checked) {
return true;
}
if (checked && aData[stockCol] > qntStock) {
return true;
}
return false;
});
Run Code Online (Sandbox Code Playgroud)
你可以这样做:在配置中添加一个参数:
var oTable = $('#productTable').dataTable({
"applyFilter":true,
"aoColumnDefs": [{
"sClass": "my_class",
"aTargets": [4]
}],
"bAutoWidth": false,
"iDisplayLength": 100,
"fnDrawCallback": function() {
$("td.my_class").editable(function(value, settings)
{
return(value);
},
{
indicator : 'Save...',
tooltip : 'Click to Edit...'
}
);
}
});
Run Code Online (Sandbox Code Playgroud)
然后,验证您的过滤器是否处于活动状态:
//Filter Function in Stock
//$('#productTable').
$.fn.dataTableExt.afnFiltering.push(function(oSettings, aData, iDataIndex) {
if(oSettings.applyFilter)
{
var checked = $('#instock').is(':checked');
var qntStock = 1;
var stockCol = 3;
if (!checked) {
return true;
}
if (checked && aData[stockCol] > qntStock) {
return true;
}
return false;
}
else
return true;
});
Run Code Online (Sandbox Code Playgroud)