如何在javascript中突出显示searchtext记录?

时间:2013-12-23 14:43:40

标签: javascript jquery

名称角色

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。

2 个答案:

答案 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/