我正在使用DataTables来创建表格。其中一列包含'i'元素和隐藏输入。我想按隐藏值过滤数据行,但我无法做到这一点。到目前为止,我发现问题出现在search()方法中,我想它不会搜索像'input'这样的子元素,我保留了我的值。 代码片段:
var select = $('<select><option value=""></option><option value="true">Accepted</option><option value="false">Rejected</option></select>')
.appendTo($(column.footer()).empty())
.on('change', function () {
var val = $(this).val();
column.search(val, true, false) // problem is here
.draw(true);
});
答案 0 :(得分:1)
没关系,我已经成功实现了这一目标。我需要定义“columnDefs”并在这个“目标”里面,这些列是你想要过滤和“渲染”的列。 这是代码:
var table = $('#dataCheck').DataTable({
"sDom": "ltp",
"columnDefs": [{
"targets": [6],
"render": function ( data, type, full, meta ) {
if(type === 'filter'){
return $('#dataCheck').DataTable().cell(meta.row, meta.col).nodes().to$().find('input').val();
} else {
return data;
}
}
}],
initComplete: function () {
this.api().columns().every(function (i) {
var column = this;
if (i == 6)
{
var select = $('<select><option value="..."></option><option value="true">Accepted</option><option value="false">Rejected</option></select>')
.appendTo($(column.footer()).empty())
.on('change', function () {
var val = $(this).val();
column.search(val, true, false)
.draw(true);
});
column.data().unique().sort().each(function (d, j) {
select.append('<option value="' + d + '">' + d + '</option>')
});
}
});
}
});