【发布时间】:2013-07-20 05:12:46
【问题描述】:
目前我正在使用这段 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,然后使用 javascript 来显示:none,但是有很多不同的行,对于我可能遗漏的一些明显的东西来说,这似乎需要大量的手动工作。
感谢任何帮助。
编辑:此外,如果有人愿意的话 - 我也在试图弄清楚当有人搜索值时如何忽略标点符号。现在,如果值为“that's”并且有人搜索“thats”,它将找不到匹配项。
【问题讨论】:
-
您应该在内循环的 TD 上调用
show和hide。找到匹配项时不要返回false,因为这会终止循环。
标签: javascript search html-table