Javascript 将字符串与每个li元素进行比较

Javascript 将字符串与每个li元素进行比较,javascript,jquery,Javascript,Jquery,我想将输入与li元素进行比较,但出于某种原因,它只检查最后一个li元素。当运行下面的脚本时,可以看到“test”可以很好地工作,但“example”或“example2”则不行 $(文档).ready(函数(){ 变量$input=$(“#自动完成”); $(文档).on('keyup',$input,function()){ var$val=$input.val().trim(), $select=$('.autocomplete content'); //检查输入是否为空 如果($val!

我想将输入与li元素进行比较,但出于某种原因,它只检查最后一个li元素。当运行下面的脚本时,可以看到“test”可以很好地工作,但“example”或“example2”则不行

$(文档).ready(函数(){
变量$input=$(“#自动完成”);
$(文档).on('keyup',$input,function()){
var$val=$input.val().trim(),
$select=$('.autocomplete content');
//检查输入是否为空
如果($val!=''){
$select.children('li')。每个(函数(){
var$li=$(此),
$html=$li.html(),
$text=$li.text().trim();
//设置输入值
$li.单击(函数(){
$input.val($text);
});
//检查该值是否至少有1个匹配项
如果($text.indexOf($val)!=-1){
//当输入更改并找到匹配项时删除类隐藏
if($li.hasClass('hide')){
$li.removeClass('hide');
}
//取消隐藏“ul.自动完成内容”
if($select.hasClass('hide')){
$select.removeClass('hide');//显示选项
}
}否则{
$li.addClass('hide');
$select.addClass('hide');//隐藏选项
}
});
}否则{
$select.addClass('hide');
}
});
});
.hide{
显示:无;
}

  • 范例
  • 例2
  • 试验

需要删除
$select.addClass('hide')。当输入与
test
不匹配时调用它,即使它可能与
示例
匹配

$(文档).ready(函数(){
变量$input=$(“#自动完成”);
$(文档).on('keyup',$input,function()){
var$val=$input.val().trim(),
$select=$('.autocomplete content');
//检查输入是否为空
如果($val!=''){
$select.children('li')。每个(函数(){
var$li=$(此),
$html=$li.html(),
$text=$li.text().trim();
//设置输入值
$li.单击(函数(){
$input.val($text);
});
//检查该值是否至少有1个匹配项
如果($text.indexOf($val)!=-1){
//当输入更改并找到匹配项时删除类隐藏
if($li.hasClass('hide')){
$li.removeClass('hide');
}
//取消隐藏“ul.自动完成内容”
if($select.hasClass('hide')){
$select.removeClass('hide');//显示选项
}
}否则{
$li.addClass('hide');
//$select.addClass('hide');//隐藏选项
}
});
}否则{
$select.addClass('hide');
}
});
});
.hide{
显示:无;
}

  • 范例
  • 例2
  • 试验

需要删除
$select.addClass('hide')。当输入与
test
不匹配时调用它,即使它可能与
示例
匹配

$(文档).ready(函数(){
变量$input=$(“#自动完成”);
$(文档).on('keyup',$input,function()){
var$val=$input.val().trim(),
$select=$('.autocomplete content');
//检查输入是否为空
如果($val!=''){
$select.children('li')。每个(函数(){
var$li=$(此),
$html=$li.html(),
$text=$li.text().trim();
//设置输入值
$li.单击(函数(){
$input.val($text);
});
//检查该值是否至少有1个匹配项
如果($text.indexOf($val)!=-1){
//当输入更改并找到匹配项时删除类隐藏
if($li.hasClass('hide')){
$li.removeClass('hide');
}
//取消隐藏“ul.自动完成内容”
if($select.hasClass('hide')){
$select.removeClass('hide');//显示选项
}
}否则{
$li.addClass('hide');
//$select.addClass('hide');//隐藏选项
}
});
}否则{
$select.addClass('hide');
}
});
});
.hide{
显示:无;
}

  • 范例
  • 例2
  • 试验

当在输入中输入任何内容时,您可以尝试使用伪选择器,而不是在所有
li中循环。这将查找包含我们提供的文本的所有元素,如果您打算查找以搜索字符串开头的元素,那么您可能需要临时修改一下。可能会有帮助

$(文档).ready(函数(){
变量$input=$(“#自动完成”);
$(文档).on('keyup',$input,function()){
var$val=$input.val().trim(),
$select=$('.autocomplete content');
//检查输入是否为空
如果($val!=''){
$select.children('li').addClass('hide'))
$select.children('li').filter(函数(){
console.log($(this.text().indexOf($val))
返回$(this).text().indexOf($val)!=-1;
}).removeClass(“隐藏”);
}否则{
$selec