2017-04-24 43 views
0

我對Javascript的瞭解& jQuery非常有限,但我在一些幫助下管理自己的自動完成功能,並將其放在了我希望的位置。在另一個函數中添加Javascript自動完成分割功能

我想將自動填充的結果限制爲我想要的任何長度。我知道下面的代碼的限制結果:

source: function(request, response) { 
    var results = $.ui.autocomplete.filter(airports, request.term); 
    response(results.slice(0, 10)); 
} 

,但我的「源」已經使用了功能通過我的數組中&鍵的特定值來搜索術語:

function airportArray(request, response) { 
    var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); 
    response($.grep(airports, function(value) { 
     return matcher.test(value.iata) || matcher.test(value.city) || matcher.test(value.airport); 
    })); 
} 

我如何添加過濾器到我已經編碼的功能?

的jsfiddle:https://jsfiddle.net/cgaybba/17p7uyvf/

我已經嘗試了許多變化,但就像我說的,我的知識是有限的兩個功能成功地結合在一起。

任何援助將不勝感激。

回答

0

如果您正在尋找簡單的過濾結果至多10個項目,你可以從剛剛追加$.grep切片功能,返回數組:

response(
    $.grep(airports, function(value) { 
     return matcher.test(value.iata) || 
       matcher.test(value.city) || 
       matcher.test(value.airport); 
     }) 
    .slice(0, 10) 
); 
0

試試這個:

var cur = 0; 
    var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); 
    response(
     $.grep(airports, function(value) { 
      var result = matcher.test(value.iata) || matcher.test(value.city) || matcher.test(value.airport);   
      if (cur >= 10 && result == true) { result = false; } else { cur = cur + 1; } 
      return result; 
     }) 
    ); 

你已經快到了。