2017-06-15 25 views
0

我试图做jQuery自动完成,使我可以搜索多个单词。jQuery自动完成子字符串匹配

举例来说,如果我有smartvery smartsuper smart在列表中,我想可以开始输入smar,并有三个选项出现。

这段代码的意义在于,如果我从一开始就像over那样开始打字,它会建议over smart这是正确的。但是如果我只输入smart这就是我们所期望的输出结果,这并不表示它。

任何想法如何调整代码,以便我可以搜索并建议在列表中说一个子字符串?

http://jsfiddle.net/UKgD6/390/

var acList = ['smart', 
'over smart', 
'smart land', 
'under smart', 
'very smart' 
]; 

$('#ac').autocomplete({ 
    source: function(request, response) { 
    var matches = $.map(acList, function(acItem) { 
     if (acItem.toUpperCase().indexOf(request.term.toUpperCase()) === 0) { 
     return acItem; 
     } 
    }); 
    response(matches); 
    } 
}); 

回答

1

您的问题可以通过改变indexOf()检查固定。将=== 0更改为!== -1。无论搜索字符串的索引在实际字符串中如何,都会返回任何匹配的内容。

http://jsfiddle.net/UKgD6/391/

+0

哦,我的天哪,你真了不起!精彩的作品 –