【发布时间】:2014-08-28 17:12:57
【问题描述】:
我正在创建一个用户可以在多个列中搜索的搜索。
我使用 jQuery :contains 实现了对单列的搜索,但没有得到如何进行多列搜索?
代码:
<table border="1" cellpadding="10">
<tr style="background:#428bca; color:#fff;">
<th>Name</th>
<th>Number</th>
</tr>
<tr>
<td>
<input type="text" onkeyup="search('name', this.value);" />
</td>
<td>
<input type="text" onkeyup="search('number', this.value);" />
</td>
</tr>
<tr>
<td class="search_name">abcd</td>
<td class="search_number">12345</td>
</tr>
<tr>
<td class="search_name">abcd</td>
<td class="search_number">67890</td>
</tr>
<tr>
<td class="search_name">ijkl</td>
<td class="search_number">00000</td>
</tr>
<tr>
<td class="search_name">mnop</td>
<td class="search_number">00000</td>
</tr>
</table>
此处为 Java 脚本代码:
function search(field, val) {
if (val.length > 1) {
$('.search_name').parent('tr').hide();
$.expr[":"].contains = $.expr.createPseudo(function(arg) {
return function(elem) {
return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
if (field == 'name') {
$('.search_name:contains(' + val + ')').parent('tr').show();
}
if (field == 'number') {
$('.search_number:contains(' + val + ')').parent('tr').show();
}
} else {
$('.search_name').parent('tr').show();
}
}
从上面的代码中,它一次搜索单个列,但我想在 name abcd 和 number 12345 中搜索单词,所以它只显示1 行同时匹配两个关键字。
【问题讨论】:
-
对不起,我不明白你的目标。输入这些搜索词已经让您进入 1 行。您是否希望它们出现在单个搜索条目字段中?
-
@SMcCrohan 请检查我的插件,在第一个 txtbox 中写
abcd它会显示 2 个结果,然后如果你在第二个 txtbox 中写12345它应该只显示 1 个结果 -
啊!实际上,我确实得到了你想要的结果(它减少到 1 行),但这仅仅是因为你选择的数据。如果您将 ijl 行更改为也将 12345 作为其编号,那么您可以看到它已损坏。
标签: javascript jquery html contains