我目前正在使用.filter()方法将INPUT字段( prjName )的值与SELECT
字段中的选项相匹配(的 prjList )。仅当输入的值与选项文本完全匹配时才有效:
$("select[title='Projects List'] option").filter(function()
{
return $(this).text() === prjName
}).prop('selected', true);
因此,此代码会尝试选择 prjList 中的第一个选项,该选项与输入 prjName 的文本相匹配。没问题,按预期工作。
我有第二个SELECT字段,我们称之为 prjSimilar 。我可以动态地向 prjSimilar 添加选项。没有问题。我要做的是 - 除了完全匹配 - 找到类似于 prjName 的值的任何内容,然后将其添加为中的新选项 prjSimilar 即可。基本上是关键字搜索。例如,如果用户在文本框中键入“RED VOLKSWAGEN BEETLE”,我想在 prjList 中找到包含这三个单词之一的任何选项,每个单词添加一个 prjSimilar ,因为它找到了它。
到目前为止,我已尝试过.filter()和indexOf的变体,但我没有取得任何成功。
可以使用哪种Javascript / jQuery方法在列表中查找类似的项目?
答案 0 :(得分: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);