2017-06-02 77 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);