1

我使用 jQuery 从头开始​​编写了一个搜索功能,以满足特定需求。<span>它从a 中搜索数据,然后如果它与文本框中的字符串不匹配<div>,则隐藏它。<div>

我遇到的问题是它会识别字符串但不是第一个字符。它也区分大小写,这不是我想要包含的功能。

 //Grab ID of current recordContainer
            var currentID = $(this).attr('id');
        // Add hash tag so it can be used as an ID call
            var currentID2 = ("#" + currentID);
        //Grab data from author span in current recordContainer
            var currentAuthor = $(this).children('span.listLeadAuthor').text();
        //If current author matches anything in the search box then keep it visible
            if (currentAuthor.search(searchBox1) > 0)
            {
                    $(currentID2).show();
                    count++;
            }
        //If search box is empty keep it visible
            else if (searchBox1 === "")
            {
                    $(currentID2).show();
            }

JSFiddle 这里

4

2 回答 2

5

问题是您的 if 语句忽略了第一个字符,因为第一个字符位于索引 0 处。

if (currentAuthor.search(searchBox1) > 0)

应该:

if (currentAuthor.search(searchBox1) >= 0)

如果您需要区分大小写,则需要应用toUpperCase()toLowerCase()

if (currentAuthor.ToUpperCase().search(searchBox1.toUpperCase()) >= 0)
于 2013-03-26T10:02:51.270 回答
2

我遇到的问题是它会识别字符串但不是第一个字符。

你的问题就在这里:

if (currentAuthor.search(searchBox1) > 0)

JS 中的 String.search 为您提供第一个匹配项的位置。如果那是文本的开头,那么它就是0.

未找到匹配项的返回值不是0,而是-1

于 2013-03-26T10:02:09.960 回答