Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在键向上时进行快速搜索筛选?_Javascript_Jquery_Regex_Optimization - Fatal编程技术网

Javascript 如何在键向上时进行快速搜索筛选?

Javascript 如何在键向上时进行快速搜索筛选?,javascript,jquery,regex,optimization,Javascript,Jquery,Regex,Optimization,我试图在一个包含大量表数据的表中添加一个过滤器功能。几乎800个td 我可以在输入时搜索文本,但我的逻辑非常慢。它不允许我在搜索之前完整地写下文本,这有点像是文本输入中的停顿 因此,我正在寻找一个帮助,以找出这段代码中的错误。如何对此进行优化?有人能帮我吗 这是密码 jQuery("#sear").keyup(function(){ var searching_val = jQuery(this).val(); var mysearch = new RegExp(searching_val,'g

我试图在一个包含大量表数据的表中添加一个过滤器功能。几乎800个
td

我可以在输入时搜索文本,但我的逻辑非常慢。它不允许我在搜索之前完整地写下文本,这有点像是文本输入中的停顿

因此,我正在寻找一个帮助,以找出这段代码中的错误。如何对此进行优化?有人能帮我吗

这是密码

jQuery("#sear").keyup(function(){
var searching_val = jQuery(this).val();
var mysearch = new RegExp(searching_val,'gi'); 
jQuery("#container td").each(function(){
if(mysearch.test(jQuery(this).data('samp'))){
    jQuery(this).show();
}else{
    jQuery(this).fadeOut();
}
   });
});

我在fiddle中展示的示例只有两行。实际上,我有更多的
和更多的
表数据

当我们有更多的td时,这是常见的行为吗?或者有没有办法优化这个?我无法避免循环使用
数据samp
属性,因为内容的格式不同,这些格式与示例中的格式不同。所以所有这些都存储在一个表的data属性
td
中,以检索它进行输入


任何帮助都将不胜感激。

以下是适用于您的代码:

jQuery("#sear").keyup(function(e){
    var searching_val = jQuery(this).val();
    setTimeout(function(){
       if(searching_val != ""){  // If search value is not empty value
          jQuery("#container td").show();
          jQuery("#container td").each(function(){
              if(jQuery(this).text().indexOf(searching_val) < 0){
                  jQuery(this).hide();
              }
          });
       }else{
          jQuery("#container td").show();  // Show all td's
       }
    }, 2000);
});
jQuery(“#sear”).keyup(函数(e){
var search_val=jQuery(this.val();
setTimeout(函数(){
如果(搜索值!=“”){//如果搜索值不是空值
jQuery(“#container td”).show();
jQuery(“#container td”).each(function(){
if(jQuery(this).text().indexOf(search_val)<0){
jQuery(this.hide();
}
});
}否则{
jQuery(“#container td”).show();//显示所有td
}
}, 2000);
});

就这样。

谢谢你的帮助。我将您的解决方案与
jQuery(this).data('samp')
一起使用,而不是
jQuery(this).text()
但我仍然无法连续键入,文本输入挂起。我有更多的td在现实中我已经更新了代码,所以现在你可以通过按回车键输入搜索值来执行。享受。。!!有什么问题吗?我不希望他们按enter键。请告诉我您希望执行搜索的确切方式,以便我根据更新答案。当用户开始键入时,他们需要查看结果而无需等待。现在,当我输入一两个字符时,我甚至不能输入剩余的字母。这让我们不得不等到我输入的第一个字母出现后再输入剩余的字母。它正在挂起输入文本以进行键入