Javascript 在任何位置包含搜索词的筛选器元素
目前,我有一个基于输入筛选列表的函数,但是它只尝试与第一个字母匹配,而不是在任何地方查找输入文本。例如,我的意思是,当用户键入“Eng”时,它将与“England”匹配,并删除其他名称,这很好,但是如果用户键入“land”,则不会显示匹配项,而不是显示列表中名称中包含“land”的所有国家Javascript 在任何位置包含搜索词的筛选器元素,javascript,jquery,Javascript,Jquery,目前,我有一个基于输入筛选列表的函数,但是它只尝试与第一个字母匹配,而不是在任何地方查找输入文本。例如,我的意思是,当用户键入“Eng”时,它将与“England”匹配,并删除其他名称,这很好,但是如果用户键入“land”,则不会显示匹配项,而不是显示列表中名称中包含“land”的所有国家 $(function() { $("input").keyup(function() { var val = $(this).val(); $("ul li").sho
$(function() {
$("input").keyup(function() {
var val = $(this).val();
$("ul li").show().filter(function() {
return $(this).text().toLowerCase().trim().indexOf(val);
}).hide();
});
});
要显示我当前使用的内容:如果您正在使用,请利用
:contains
。此方法将返回包含所有匹配元素的jQuery对象
$(函数(){
$(“输入”).keyup(函数(){
var val=$(this.val();
$(“ul>li”).hide();
$(“ul>li:contains(“+val+”))”)。show();
});
});代码>
输入{
填充物:5px;
利润率:0.5px;
}
保险商实验室{
利润率:10px0;
}
李{
显示:无;
}
- 英格兰
- 威尔士
- 苏格兰
- 爱尔兰
试试这样的方法
$(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();
});
});
只需添加filter()
条件即可。