从jquery / javascript中的字符串的第一个字符过滤表数据

时间:2016-02-21 04:20:31

标签: javascript jquery

我有一张包含一些记录和文本框的表格。我想基于在keyup事件上的文本框中输入的字符串来过滤表数据。

目前我正在使用一个代码块来过滤表数据,但它搜索表中存在于字符串中任何位置的记录。

例如: - 如果我输入' ab'在文本框中,它使用字符串过滤表记录,其中包含关键字' ab'像abcd,babd,cdab等。

但我的要求是当我输入关键字' ab'在文本框中,它只搜索那些从' ab'开始的字符串。像abcd,abdc等。

这是我目前的代码: -

function Search_Gridview(strKey, strGV) {
    var strData = strKey.value.toLowerCase().split(" ");
    var tblData = document.getElementById(strGV);
    var rowData;
    for (var i = 1; i < tblData.rows.length; i++) {
        rowData = tblData.rows[i].cells[3].innerHTML;
        var styleDisplay = 'none';
        for (var j = 0; j < strData.length; j++) {
            if (rowData.toLowerCase().indexOf(strData[j]) >= 0)
                styleDisplay = '';
            else {
                styleDisplay = 'none';
                break;
            }
        }
        tblData.rows[i].style.display = styleDisplay;
    }
} 

请帮帮我们......

3 个答案:

答案 0 :(得分:1)

您可以使用jQuery过滤包含以例如开头的字符串的列这种方式的“ab”:

var re = $("#TABLE_ID td").filter(function(i){ return this.innerHTML.startsWith("ab") })
//You can after, get the values of each td of the result of this way
re.map(function(i){return this.innerHTML})

答案 1 :(得分:0)

您可以使用RegExp的测试方法。

var stringData = [
  'aaa', 'aab', 'aac',
  'aba', 'abb', 'abc'
];

var searchPrefix = 'ab';

var result = stringData.filter(function (str) {
  // return true if str has prefix with searchPrefix.
  return (new RegExp('^' + searchPrefix)).test(str);
});

console.log(result);

JavaScript Regexp Reference

答案 2 :(得分:0)

要仅搜索以您输入的搜索字符开头的字符串,只需在原始代码的一行上更改一个字符即可。

更改此行

if (rowData.toLowerCase().indexOf(strData[j]) >= 0)

进入这个...

if (rowData.toLowerCase().indexOf(strData[j]) == 0)

这是强制 indexOf()寻址为零,而不是允许中间字符串匹配。

下面是用于复制和粘贴到项目(例如html表过滤器)中的完整(修改后的)代码。

function Search_Gridview(strKey, strGV) {
    var strData = strKey.value.toLowerCase().split(" ");
    var tblData = document.getElementById(strGV);
    var rowData;
    for (var i = 1; i < tblData.rows.length; i++) {
        rowData = tblData.rows[i].cells[3].innerHTML;
        var styleDisplay = 'none';
        for (var j = 0; j < strData.length; j++) {
            if (rowData.toLowerCase().indexOf(strData[j]) == 0)
                styleDisplay = '';
            else {
                styleDisplay = 'none';
                break;
            }
        }
        tblData.rows[i].style.display = styleDisplay;
    }
} 
  • Search_Gridview()=函数的名称。
  • strKey =输入搜索字符
  • strGV = html表的ID>