目前我正在使用这个Javascript来搜索HTML表格以匹配某个单元格中的数据。
function searchTable(inputVal) {
var table = $('#tblData');
table.find('tr').each(function(index, row) {
var allCells = $(row).find('td');
if(allCells.length > 0) {
var found = false;
allCells.each(function(index, td) {
var regExp = new RegExp(inputVal, 'i');
if(regExp.test($(td).text())) {
found = true;
return false;
}
});
if(found == true){
$(row).show("highlight");
}
else {
$(row).hide("highlight");
}
}
});
}
该表按以下结构设置:
<tr>
<td>value1</td>
<td>value2</td>
</tr>
因此,在搜索value1时,整行显示 - 包括value2。
我无法弄清楚如何让value2无法显示。我试图为每个id分配一个不同的id然后使用javascript来显示:none,但是有很多不同的行,对于我可能会遗漏的明显的东西,似乎有很多手动工作。
感谢任何帮助。
编辑:此外,如果有人支持它 - 我也试图找出当有人搜索某个值时如何忽略标点符号。现在如果值是“那个”并且有人搜索“那个”,它将找不到匹配。
答案 0 :(得分:0)
此更新的代码仅显示“已找到”的列。我想你可能想要添加css类而不是显示和隐藏。评论文本显示了如何添加和删除“突出显示”类。
function searchTable(inputVal) {
var table = $('#tblData');
table.find('tr').each(function (index, row) {
var allCells = $(row).find('td');
if (allCells.length > 0) {
var found = false;
allCells.each(function (index, td) {
var regExp = new RegExp(inputVal, 'i');
if (regExp.test($(td).text())) {
$(this).show();
//$(this).addClass('highlight');
} else {
$(this).hide();
//$(this).removeClass('highlight');
}
});
}
});
}
我不知道您是否有将来循环遍历行的目的,但您的代码可以简化为:
function searchTable(inputVal) {
$('#tblData tr td').each(function (index, td) {
var regExp = new RegExp(inputVal, 'i');
if (regExp.test($(td).text())) {
//$(this).show();
$(this).addClass('highlight');
} else {
//$(this).hide();
$(this).removeClass('highlight');
}
});
}