我试图通过选择带有数据表的一系列数字来制作自定义过滤器,并且只能使用一次。我在很多方面都尝试过,没有找到任何工作,也没有找到我找到的任何东西,所以我来到这里寻求你的帮助。
<select id="filtro1">
<option value="">Selecione</option>
<option value="1-10">1-10</option>
<option value="11-16">11-16</option>
</select>
这是jquery
$(document).ready(function() {
$('#filtro1').on("change", function(){
var valor = $(this).val();
var arr = valor.split('-');
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
var min = parseInt( arr[0], 7 );
var max = parseInt( arr[1], 7 );
var age = parseFloat( data[7] ) || 0; // use data for the age column
if ( ( isNaN( min ) && isNaN( max ) ) ||
( isNaN( min ) && age <= max ) ||
( min <= age && isNaN( max ) ) ||
( min <= age && age <= max ) )
{
return true;
}
return false;
}
);
table.draw();
});
var table = $('#classificacao').DataTable({
"lengthMenu": [ [10, 25, 50, 100, -1], [10, 25, 50, 100, "Todos"] ],
"processing": true,
"oLanguage": {
"sUrl": "../busca/pt-br.txt"
},
"columnDefs": [
{
"targets": [ 7 ],
"visible": false
}
]
});
});
我使用输入类型文本
获取此示例https://datatables.net/examples/plug-ins/range_filtering.html
提前感谢您的帮助。
答案 0 :(得分:0)
在添加新的自定义过滤器之前,只需删除或pop()
以前设置的自定义过滤器:
$('#filtro1').on("change", function() {
var valor = $(this).val();
var arr = valor.split('-');
if ( $.fn.dataTable.ext.search.length>0 ) {
$.fn.dataTable.ext.search.pop(); //<--here
}
$.fn.dataTable.ext.search.push(
...
);
table.draw();
});
$.fn.dataTable.ext.search
是一个数组,可以容纳多个过滤器&#34;层次结构&#34;。您的代码只能运行一次,因为下一个过滤器将在第一个过滤器输出中运行。