过滤包含搜索词的元素

时间:2017-03-04 14:41:57

标签: javascript jquery

目前我有一个根据输入过滤我的列表的函数,但是它只尝试匹配第一个字母,而不是在任何地方查找输入文本。例如,我的意思是当用户键入" Eng"它将与" England"匹配如果用户输入" land"并且删除其他的则没问题。这没有匹配,而是显示列表中的所有国家/地区" land"以他们的名义。

$(function() {
    $("input").keyup(function() {
        var val = $(this).val();
        $("ul li").show().filter(function() {
            return $(this).text().toLowerCase().trim().indexOf(val);
        }).hide();
    });
});

JSFiddle显示我目前使用的内容:

2 个答案:

答案 0 :(得分:0)

如果您正在使用,那么请利用:contains。此方法将返回包含所有匹配元素的jQuery对象。

$(function() {
  $("input").keyup(function() {
    var val = $(this).val();
    $("ul > li").hide();
    $("ul > li:contains('" + val + "')").show();
  });
});
input {
  padding: 5px;
  margin: 0 5px;
}

ul {
  margin: 10px 0 0;
}

li {
  display: none;
}
<script src="https://code.jquery.com/jquery-2.2.4.js"></script>
<input type="text" id="inp" />
<ul>
  <li>England</li>
  <li>Wales</li>
  <li>Scotland</li>
  <li>Ireland</li>
</ul>

答案 1 :(得分:0)

尝试这样的事情

$(function () {
  $("input").keyup(function () {
    var val = $(this).val();
    $("ul li").show().filter(function () {
        if($(this).text().toLowerCase().trim().indexOf(val) > -1){
           return 0;
        }
        return 1;
    }).hide();
  });
});

https://jsfiddle.net/zwLsackq/1/

相关问题