2013-02-13 1 views
0

예제 JQuery 자동 완성 코드. 나는 코드를 코드를 다시 작성하지 않고 동일한 기능을 공유 할 수있게 해주는 두 개의 별도의 자동 완성 instatiations에서 호출 할 수있는 하나의 함수를 wamt한다.자동 완성 간 JQuery 공유 기능

$("tags1").autocomplete(
{ 
       source: availableTags 
}); 

확실한지 확인하십시오. 나는 코드를 반복하고 싶지 않다. 그래서 다른 곳에서 다른 자동 완성 기능을 사용할 때 자동 완성 기능에 포함 된 코드를 참조하고 코드를 반복하지 않으려 고합니다. (방금 반복했습니다)

+1

하여 자동 완성 데이터가 텍스트 상자에 입력 한 내용에 의존하지 않는다? 자동 완성 데이터가 서버에서 전송됩니까? – Dve

+0

@Dve 예,하지만 두 개가 정확히 같고 코드를 반복하고 싶지 않습니다. – Jonathan

답변

1

수동으로 Ajax 요청을 만들어 데이터를 가져 와서 변수에 저장하고 두 자동 완성 모두에 대한 변수.

var cache = {}, 
    requestData = function(request, response) { 
     var term = request.term; 
     if(term in cache) { 
      response(cache[term]); 
      return; 
     } 

     $.getJSON("search.php", request, function(data, status, xhr) { 
      cache[term] = data; 
      response(data); 
     }); 
    }; 

$("#birds").autocomplete({ 
    minLength: 2, 
    source: requestData 
}); 

$("#moreBirds").autocomplete({ 
    minLength: 2, 
    source: requestData 
}); 

소스 : http://jqueryui.com/resources/demos/autocomplete/remote-with-cache.html

하지만 당신이 정말로 요청의 결과를 캐시하도록 클라이언트를 알려주는 서버에서 캐시 헤더를 보내야합니다. 그런 다음 두 번째 자동 완성이 동일한 요청을하면 브라우저는 서버에 다시 도달하지 않아도됩니다.

이있는 주제에 대한 좋은 기사 : https://devcenter.heroku.com/articles/increasing-application-performance-with-http-cache-headers

+0

내 질문에 분명하지 않을 수 있습니다. 내가하려고하는 것은 코드를 다시 작성하지 않고 동일한 기능을 공유 할 수있게 해주는 두 개의 별도의 자동 완성 instatiations에서 호출 할 수있는 하나의 함수를 갖는 것입니다. – Jonathan

+1

@Jonathan 소스 함수를 다시 사용할 수 있습니다 - 답변이 업데이트되었습니다. – Dve

+0

실제로 알 수 있습니다. 모든 속성을 추상화하는 방법이 있습니까? – Jonathan