在表中过滤结果
问题描述:
我有一个PHP页面和一个表格,我用数据库中的数据填充它。我在表格顶部有一个搜索字段,我想在输入时筛选行。在表中过滤结果
这里是我的Javascript
$('#system-search').keyup(function()
{
var that = this;
// affect all table rows on in systems table
var tableBody = $('.table table-filter tbody');
var tableRowsClass = $('.table table-filter tbody tr');
$('.search-sf').remove();
tableRowsClass.each(function(i, val)
{
//Lower text for case insensitive
var rowText = $(val).text().toLowerCase();
var inputText = $(that).val().toLowerCase();
if(inputText != '')
{
$('.search-query-sf').remove();
tableBody.prepend('<tr class="search-query-sf"><td colspan="6"><strong>Searching for: "'
+ $(that).val()
+ '"</strong></td></tr>');
}
else
{
$('.search-query-sf').remove();
}
if(rowText.indexOf(inputText) == -1)
{
//hide rows
tableRowsClass.eq(i).hide();
}
else
{
$('.search-sf').remove();
tableRowsClass.eq(i).show();
}
});
//all tr elements are hidden
if(tableRowsClass.children(':visible').length == 0)
{
tableBody.append('<tr class="search-sf"><td class="text-muted" colspan="6">No entries found.</td></tr>');
}
});
很抱歉的恶意代码和格式我似乎无法理解如何将它正确地格式化..
答
https://stackoverflow.com/a/19696936/1406155
您使用的是位太多的代码。首先输入字段这样
<input type="text" id="search" placeholder="Search">
,并使用以下功能搜索
$("#search").keyup(function() {
var value = this.value.toLowerCase().trim();
$("table tr").each(function (index) {
if (!index) return;
$(this).find("td").each(function() {
var id = $(this).text().toLowerCase().trim();
var not_found = (id.indexOf(value) == -1);
$(this).closest('tr').toggle(!not_found);
return not_found;
});
});
});
你能描述一下如果这个代码当前行为?问题究竟是什么? –
我正在尝试实现与此处完全相同的功能:https://bootsnipp.com/snippets/featured/js-table-filter-simple-insensitive。当我开始在搜索框中输入时,它会过滤掉结果 – user2996891
客户端(javascript)过滤可能是大型表格不好的模式 –