Javascript Datatable函数,用于筛选列中低于值的项
我试图创建一个按钮,当单击该按钮时,它会过滤我的Javascript Datatable函数,用于筛选列中低于值的项,javascript,jquery,datatables,Javascript,Jquery,Datatables,我试图创建一个按钮,当单击该按钮时,它会过滤我的datatable,其中特定列小于6。我正在尝试制作一个示例,但由于缺乏编程/Javascript知识,我有点挣扎 谢谢你的帮助 function filterBelowSix() { var maxScore = 6; var totalScoreField = parseFloat( data[3] ); // use data for the total score column i think thi
datatable
,其中特定列小于6。我正在尝试制作一个示例,但由于缺乏编程/Javascript知识,我有点挣扎
谢谢你的帮助
function filterBelowSix() {
var maxScore = 6;
var totalScoreField = parseFloat( data[3] ); // use data for the total score column i think this the column index
var table = $('#customer_df').DataTable();
if (maxScore <= totalScoreField) {
return true;
} else { return false;}
// how do i pass if else statement to table, so then i can order by specific columns after its been filtered?
table.order([8,'desc' ],[3,'asc']).draw();
}
函数filterBelowSix(){
var maxScore=6;
var totalScoreField=parseFloat(数据[3]);//将数据用于总分列我认为这是列索引
var table=$('#customer_df')。DataTable();
如果(maxScore,则可以使用链接示例中提到的相同过滤函数:
$.fn.dataTable.ext.search.push()
将其与按钮的单击事件以及所需的排序API调用相结合,可以得到以下结果:
$(document).ready(function() {
var table = $('#example').DataTable();
// register the click event for our button
// I prefer doing this as opposed to using onclick in the button itself
$( "#below_x" ).click(function() {
filterBelowValue();
});
// the filter followed by a sort and table re-draw:
function filterBelowValue() {
var threshold = 60; // or whatever you want
var colIdx = 3; // 4th column (first col has index of 0)
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
return (data[colIdx] < threshold);
}
);
table.column( colIdx ).order( 'asc' ).draw();
}
} );
事件处理程序:
$( "#reset" ).click(function() {
doReset();
});
以及doReset
功能:
function doReset() {
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
return true; // show all rows!
}
);
table.column( 0 ).order( 'asc' ).draw();
}
function filterBelowValue() {
var threshold = 60; // or whatever you want
var colIdx = 3; // 4th column (first col has index of 0)
while($.fn.dataTable.ext.search.length > 0) {
$.fn.dataTable.ext.search.pop();
}
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
return (data[colIdx] < threshold);
}
);
table.column( colIdx ).order( 'asc' ).draw();
}
function doReset() {
while($.fn.dataTable.ext.search.length > 0) {
$.fn.dataTable.ext.search.pop();
}
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
return true; // show all rows!
}
);
table.column( 0 ).order( 'asc' ).draw();
}
但是,如上所述,这将把第二个函数推到过滤器函数数组上,而第二个函数将不会像预期的那样工作,因为第一个函数(过滤数据的函数)仍然存在
因此,我们必须首先清除函数数组:
while($.fn.dataTable.ext.search.length > 0) {
$.fn.dataTable.ext.search.pop();
}
此片段需要放在filter函数和all clear函数之前:
function doReset() {
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
return true; // show all rows!
}
);
table.column( 0 ).order( 'asc' ).draw();
}
function filterBelowValue() {
var threshold = 60; // or whatever you want
var colIdx = 3; // 4th column (first col has index of 0)
while($.fn.dataTable.ext.search.length > 0) {
$.fn.dataTable.ext.search.pop();
}
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
return (data[colIdx] < threshold);
}
);
table.column( colIdx ).order( 'asc' ).draw();
}
function doReset() {
while($.fn.dataTable.ext.search.length > 0) {
$.fn.dataTable.ext.search.pop();
}
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
return true; // show all rows!
}
);
table.column( 0 ).order( 'asc' ).draw();
}
函数filterBelowValue(){
var threshold=60;//或任何您想要的
var colIdx=3;//第四列(第一列的索引为0)
而($.fn.dataTable.ext.search.length>0){
$.fn.dataTable.ext.search.pop();
}
$.fn.dataTable.ext.search.push(
功能(设置、数据、数据索引){
返回(数据[colIdx]<阈值);
}
);
table.column(colIdx).order('asc').draw();
}
函数doReset(){
而($.fn.dataTable.ext.search.length>0){
$.fn.dataTable.ext.search.pop();
}
$.fn.dataTable.ext.search.push(
功能(设置、数据、数据索引){
返回true;//显示所有行!
}
);
表.column(0).order('asc').draw();
}
Thank you@andrewjames这是一个有效的快速问题,我尝试使用函数reset_test(){var table=$('.#customer_df').DataTable();table.search('..draw();}添加一个重置按钮以删除过滤器
但它现在似乎不起作用了……有什么想法吗?我添加了一些额外的信息,介绍如何重置过滤器。感谢您解释此过程,非常有用。我希望我能将此答案再次选中为正确答案。:)
function filterBelowValue() {
var threshold = 60; // or whatever you want
var colIdx = 3; // 4th column (first col has index of 0)
while($.fn.dataTable.ext.search.length > 0) {
$.fn.dataTable.ext.search.pop();
}
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
return (data[colIdx] < threshold);
}
);
table.column( colIdx ).order( 'asc' ).draw();
}
function doReset() {
while($.fn.dataTable.ext.search.length > 0) {
$.fn.dataTable.ext.search.pop();
}
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
return true; // show all rows!
}
);
table.column( 0 ).order( 'asc' ).draw();
}