如何解决修改数据表搜索功能
如果我在搜索输入中输入两个由空格“abc xyz”分隔的字符串,数据表会找到包含这两个字符串的行。
1 abc001 John London xyz
2 abc001 Mary NYC xyz
我想找到所有包含 abc 的行和所有包含 xyz 的行。
1 abc001 John London xyz
2 abc001 Mary NYC xyz
3 abc002 Susan LA qpr
4 xyz001 Peter Paris efg
5 xyz002 Michael Chicago efg
基本上……当我添加字符串时,我正在扩大搜索范围。请注意,第 3 行没有 xyz,第 4 行或第 5 行没有 abc。
我有一个单独的搜索功能可以做到这一点。事实上,它也可以排除。所以我可以搜索包含多个字符串的 html 表并排除一些字符串
function myFunctionS() {
var input,filter,table,tr,td,i,txtValue;
input = document.getElementById("myInputS");
inputExclude = document.getElementById("myInputExcludeS");
filter = input.value.toupperCase();
filterExclude = inputExclude.value.toupperCase();
table = document.getElementById("example");
tr = table.getElementsByTagName("tr");
for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[0];
if (td) {
txtValue = td.textContent || td.innerText;
txtValue = txtValue.toupperCase()
let match = true
let f = true // add this line
filter.split(' ').forEach(q => {
if(q && q.length > 0) {
// and add these lines
if(f) {
match = false
f = false
}
match = match || txtValue.indexOf(q) > -1 /// only change && instead ||
}
})
filterExclude.split(' ').forEach(q => {
if(q && q.length > 0)
match = match && txtValue.indexOf(q) == -1
})
if (match) {
tr[i].style.display = "";
} else {
tr[i].style.display = "none";
}
}
}
输入字段如下:
<input type="text" id="myInputS" onkeyup="debounce(myFunctionS(),500)" placeholder="Search for names..">
<input type="text" id="myInputExcludeS" onkeyup="debounce(myFunctionS(),500)" placeholder="Exclude names.."/>
所以我可以搜索“abc xyz”但排除芝加哥,结果是。
1 abc001 John London xyz
2 abc001 Mary NYC xyz
3 abc002 Susan LA qpr
4 xyz001 Peter Paris efg
这是一个很棒的功能,但它不适用于数据表。我必须将超过一千行的 html 表加载到一个页面中,没有分页。然后这个搜索功能很好用。 如果我尝试在数据表分页表上使用它,它只会找到第一页上的内容,并且分页会因结果而变得不正常。
有没有办法将此搜索/排除集成到数据表中或至少修改数据表搜索,以便它可以找到至少包含多个搜索字符串之一的任何行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。