我希望有一个keyup函数,它只显示跨越多行的单元格与输入文本匹配的行。 请考虑以下表格:
<table border='1'>
<tr>
<td rowspan='2'>Key1</td>
<td name='Key1'> dummy1 </td>
</tr>
<tr>
<td name='Key1'> dummy2 </td>
</tr>
<tr>
<td rowspan='2'>Key2</td>
<td name='Key2'> dummy3 </td>
</tr>
<tr>
<td name='Key2'> dummy4 </td>
</tr>
</table>
此处每行都有第二个td标记,其名称与其“父”列文本相匹配。所以当我在输入字段输入'Key1'时,我希望它只显示dummy1和dummy2。在jquery中有可能吗?
答案 0 :(得分:2)
我了解您要显示匹配name
的行。如果这是错误的,请详细说明,然后我可以更新它。
以下是演示:https://jsfiddle.net/erkaner/gugy7r1o/33/
$('input').keyup(function(){
$('tr').hide();
$("td").filter(function() {
return $(this).text().toLowerCase().indexOf(keyword) != -1; }).parent().show().next().show();
});
});
答案 1 :(得分:1)
这是我对您的问题的看法,假设您始终希望显示第一列。 https://jsfiddle.net/gugy7r1o/2/
<input type="text" id="myInput" />
<table border='1'>
<tr>
<td rowspan='2'>Key1</td>
<td name='Key1' class="data"> dummy1 </td>
</tr>
<tr>
<td name='Key1' class="data"> dummy2 </td>
</tr>
<tr>
<td rowspan='2'>Key2</td>
<td name='Key2' class="data"> dummy3 </td>
</tr>
<tr>
<td name='Key2' class="data"> dummy4 </td>
</tr>
</table>
.data{
display:none;
}
var theData = $('td.data');
var input = $('#myInput').on('keyup', function(){
theData.hide();
var value = input.val();
var matches = theData.filter('[name="'+value+'"]');
matches.show();
});
答案 2 :(得分:1)
首先,我建议使用<ul>
来包装每个键,因为表格应该用于数据结构(请原谅我,如果这是用于它)。
其次,只需将keyup
事件附加到搜索框,然后根据ID查找匹配项。见下面的例子:
还值得一提的是,如果您最终拥有大量行,那么将timeout
附加到keyup
事件可能很有用,这样只会为快速打字机触发一个过滤器!