Javascript jQuery搜索单个单词而不是字符串 问题:

Javascript jQuery搜索单个单词而不是字符串 问题:,javascript,jquery,html,Javascript,Jquery,Html,我有一个jQuery搜索函数,但是它会一起搜索单词,而不是单独搜索。e、 g.“华硕B350”不是“华硕”和“B350”这可以在搜索华硕STRIX B350-F游戏时看到,“华硕B350”不会产生结果,但“华硕”和“B350”会产生结果 代码: 预期结果: 我还想知道,如果字符串被封装在“”中,它会按顺序搜索这些单词 如果你需要更多的细节,请告诉我 谢谢您可以在每个空格处输入单词,并使用以下方法检查文本中是否存在这些单词: 现在,如果您在下面的代码段中搜索“Asus strix”,将显示两个As

我有一个jQuery搜索函数,但是它会一起搜索单词,而不是单独搜索。e、 g.“华硕B350”不是“华硕”和“B350”这可以在搜索华硕STRIX B350-F游戏时看到,“华硕B350”不会产生结果,但“华硕”和“B350”会产生结果

代码: 预期结果: 我还想知道,如果字符串被封装在“”中,它会按顺序搜索这些单词

如果你需要更多的细节,请告诉我

谢谢

您可以在每个空格处输入单词,并使用以下方法检查文本中是否存在这些单词:

现在,如果您在下面的代码段中搜索“Asus strix”,将显示两个Asus结果

$(“#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));
  });
});