Javascript jQuery搜索单个单词而不是字符串 问题:
我有一个jQuery搜索函数,但是它会一起搜索单词,而不是单独搜索。e、 g.“华硕B350”不是“华硕”和“B350”这可以在搜索华硕STRIX B350-F游戏时看到,“华硕B350”不会产生结果,但“华硕”和“B350”会产生结果 代码: 预期结果: 我还想知道,如果字符串被封装在“”中,它会按顺序搜索这些单词 如果你需要更多的细节,请告诉我 谢谢您可以在每个空格处输入单词,并使用以下方法检查文本中是否存在这些单词: 现在,如果您在下面的代码段中搜索“Asus strix”,将显示两个Asus结果Javascript jQuery搜索单个单词而不是字符串 问题:,javascript,jquery,html,Javascript,Jquery,Html,我有一个jQuery搜索函数,但是它会一起搜索单词,而不是单独搜索。e、 g.“华硕B350”不是“华硕”和“B350”这可以在搜索华硕STRIX B350-F游戏时看到,“华硕B350”不会产生结果,但“华硕”和“B350”会产生结果 代码: 预期结果: 我还想知道,如果字符串被封装在“”中,它会按顺序搜索这些单词 如果你需要更多的细节,请告诉我 谢谢您可以在每个空格处输入单词,并使用以下方法检查文本中是否存在这些单词: 现在,如果您在下面的代码段中搜索“Asus strix”,将显示两个As
$(“#mySearch”)。在(“keyup”,function()上{
var value=$(this.val().toLowerCase();
$(“#myTable tr:not(.discarded)td:nth child(1)”).filter(function(){
让toggle=value.split(“”).every(i=>!i | |$(this).text().toLowerCase().indexOf(i)>-1);
$(this).parent().toggle(toggle);
});
});代码>
华硕STRIX B350-F游戏
华硕ROG Strix SCAR II游戏
戴尔G7 15游戏笔记本电脑
您可以使用regexp模式来确定字符串中是否出现了单个单词:
$("#mySearch").on("keyup", function() {
var value = $(this).val().toLowerCase();
if(!(value.startsWith('"')&&value.endsWith('"'))){
value=value.replace(" ", "|");
value= value.trim();
}else {
value=value.replace("\"", "");
}
$("#myTable tr:not(.discarded) td:nth-child(1)").filter(function() {
$(this).parent().toggle($(this).text().toLowerCase().match(value));
});
});
你的意思是想根据是否包含任何单词进行过滤吗?#mySearch是一个搜索栏,我想搜索所有单词,但如果它们都在列中,但以任何顺序排列,除非它们用“”封装。你需要分割搜索词中的单词,为每行分别搜索每个单词,如果在给定行中找不到任何单词,请丢弃该行。谢谢!这非常有效,是否很难在整个字符串周围添加“”检查并跳过拆分值?搜索“asus
”会同时显示asus STRIX B350-F GAMING
和asus GAMING
。编辑:这是在您的最新更改之前,其中包括以下项目:Asus STRIX B350-F GAMING
和Asus GAMING
——后者没有包含“STRIX”。@Chri.s是的。OP没有提到我们是否可以重复匹配的文本。如果需要的话,我们应该使用正则表达式。@Uskompuf,我认为这会使问题变得“过于宽泛”。你可以查看张贴在这里的其他答案。但是,请确保验证文本中是否存在奇数个“
$("#mySearch").on("keyup", function() {
var value = $(this).val().toLowerCase();
if(!(value.startsWith('"')&&value.endsWith('"'))){
value=value.replace(" ", "|");
value= value.trim();
}else {
value=value.replace("\"", "");
}
$("#myTable tr:not(.discarded) td:nth-child(1)").filter(function() {
$(this).parent().toggle($(this).text().toLowerCase().match(value));
});
});