名称角色
applicationame role id
application1 appadministrator 1490
application developer 1498
application2 tester 1460
我需要结果,如果输入'app'作为searchtext需要突出显示所有行,因为所有行都有app.if entereted'application'作为searchtext然后需要仅突出显示第2行。因为确切的macth.like我需要检查所有列,即aplication,role等。 不需要隐藏无法处理的行。只有当macth不显示时才需要突出显示匹配。
如果用户输入“14”,因为searchtext需要突出显示所有行。如果他输入1490,则需要突出显示1strow并显示剩余的行。请帮助我实现此目的。
我的fidler:http://jsfiddle.net/kUxNj/4/
请根据此修改我的fidler。
答案 0 :(得分:2)
你应该替换它:
if ($(this).find('td:first-child').text().toUpperCase() === text.toUpperCase() ||
$(this).find("td:eq(1)").text().toUpperCase() === text.toUpperCase()
)
有了这个:
if ($(this).find('td:first-child').text().toUpperCase().indexOf(text.toUpperCase()) != -1 ||
$(this).find("td:eq(1)").text().toUpperCase().indexOf(text.toUpperCase()) != -1
)
工作原理:您的代码会查看给定文本是否与其中一行相等,但我的代码会检查其中一行是否包含给定的文本,使用indexOf()
method。
为避免隐藏不匹配的元素,请删除以下代码:
if(grid.find('td.result').length >0){
grid.find('td').not('.result').parent('tr').hide();
}
更新了小提琴:http://jsfiddle.net/kUxNj/7/
答案 1 :(得分:1)
使用match()
方法代替相等检查:
if ($(this).find('td:first-child').text().toUpperCase().match( text.toUpperCase()) ||
$(this).find("td:eq(1)").text().toUpperCase().match( text.toUpperCase()))
{
$(this).children('td').addClass('result');
}
我还删除了hide()
和show()
来电,因为它们是多余的,可以突出显示您要求的行。
更新了小提琴:http://jsfiddle.net/kUxNj/9/