目前我有一个根据输入过滤我的列表的函数,但是它只尝试匹配第一个字母,而不是在任何地方查找输入文本。例如,我的意思是当用户键入" 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显示我目前使用的内容:
答案 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();
});
});