2017-04-24 1 views
0

javascript & jQuery에 대한 지식이 매우 제한되어 있지만 필자는 자동 완성 기능을 사용하기 위해 일부 도움을 받아 관리했습니다.자바 스크립트 추가 다른 함수 내에서 자동 완성 함수 split

내 자동 완성의 결과를 원하는 길이로 제한하고 싶습니다.

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

당신은 단순히 그냥 $.grep에서 반환 된 배열에 슬라이스 기능을 추가 할 수 있습니다 최대 10 개 항목에 대한 결과를 필터링 찾고 있다면 :

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; 
     }) 
    ); 

을 이미 거의 다 왔어.