2017-06-02 76 views
2

我目前使用的.filter()方法来匹配输入字段的值(prjName)到其中一个选项SELECT场(prjList)。使用JavaScript/jQuery的找到类似的选择选项

$("select[title='Projects List'] option").filter(function() 
{ 
    return $(this).text() === prjName 
}).prop('selected', true); 

所以这个代码试图选择第一个选项中prjList使输入到prjName的文本匹配:这只有在输入的值是该选项的文本完全匹配工作。没有问题,按预期工作。

我有第二个SELECT字段到一边,我们称之为prj相似。我可以动态地添加选项prjSimilar。那里没有问题。我正在试图做的是 - 除了精确匹配 - 找到类似的prjName的任何有价值的东西,然后将其添加为新的选项prjSimilar。本质上是关键字搜索。例如,如果用户键入“红色大众甲壳虫”到文本框,我想找到prjList包含这三个词之一的任何选项,将每一个prjSimilar它找到它。

到目前为止,我已经试过.filter()和的indexOf的变化,但我并没有任何成功。

什么的Javascript/jQuery的方法可用于查找列表中的类似项目?

+0

你可以使用'.split()'方法来获取所有类型单词的数组。然后你可以在第一个列表和这个数组之间进行检查。 – Kurt

回答

1

我想找到prjList包含这三个词之一

尝试名称拆分单词和比较彼此的任何选项:

$("select[title='Projects List'] option").filter(function() 
{ 
    var words = $(this).text().split(''); 
    var prjWords = prjName.split(''); 

    for (var i = 0; i < words.length; i++) { 
    for (var j = 0; j < prjWords.length; j++) 
     if (words[i] == words[j]) { 
     return true; 
     } 
    } 
    } 
    return false; 
}).prop('selected', true);