![](/img/trans.png)
[英]Datatables jquery plugin - cycling through multiple tables with filtering
[英]jQuery Datatables custom filtering not working on all tables
我正在使用 jquery 插件 Datatables 1.10,我想使用自定义搜索来过滤同一页面上的两个表,如下所示:
function filterTableByErrorClass(propertiesTable, errorClassName) {
$.fn.dataTable.ext.search.pop();
$.fn.dataTable.ext.search.push(
function(settings, data, dataIndex) {
return $(propertiesTable.row(dataIndex).node()).find('td > div').hasClass(errorClassName);
});
propertiesTable.draw();
}
我的问题是,这只适用于其中一个表,即页面加载时就绪的表。 另一个在 js 模式中,并使用 ajax 调用加载(见下文)。 它作为 html 加载,加载后,它的行为应与其他表相同,例如,所有过滤都应在客户端完成。
$("div.modal.edit-category-info").on('shown.bs.modal', function () {
req = $.ajax({
url: "some_url",
method: "GET",
success: function(data) {
$('#modalContent').html(data);
if ( $.fn.dataTable.isDataTable( '#edit-category-table' ) ) {
editCategoryTable = $('#edit-category-table').DataTable();
}
else {
editCategoryTable = $('#edit-category-table').DataTable( {
"searching": false,
"paging": false,
"ordering": false,
"bInfo" : false
} );
}
errorValidator("edit-category-table");
attachFilteringEvents("edit-category-form");
},
});
});
我有一个触发 filterTableByErrorClass() 函数的两个表的按钮,我可以通过在其中的第一行放置一个断点来验证它在两种情况下都被调用。 但是,如果我在过滤函数内放置一个断点(在 filterTableByErrorClass() 内),则只有在我过滤第一个表时才会命中该断点,而在我尝试过滤模态表时则不会。
$.fn.dataTable.ext.search 是否不知何故不知道新的模态表? 我能以某种方式让它意识到吗?
事实证明,问题与模态表加载晚于另一个的事实无关。 过滤不起作用的原因是配置
"searching": false
我已经申请了,因为模态表不应该有搜索框。
经过一些调试后,我注意到 Datatables 中的一个内部变量bFilter
被设置为 false,此页面向我解释说这是将searching
指定为 false 的副作用。 它不仅隐藏了搜索框,而且还使整个表格不可搜索。
综上所述,如果我想从表格中去掉搜索框,但我仍然希望能够通过其他方式在表格上应用我自己的过滤,我必须在配置中切换掉"searching": false
模态表并将其替换为
"dom": 'lrtip'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.