2014-09-23 4 views
0

매개 변수 중 하나가 검색 필드와 다른 필드에있는 경우 목록을 필터링하는 방법은 무엇입니까? 예를 들어, 사용자는 group = "Test"를 지정하고 #ContactPerson 필드에서 검색을 시작합니다. 나는 단지 "기록"을 원한다. "그룹": "시험"이 나타난다. http://jsfiddle.net/71puvk59/jQuery 자동 완성 : 값 입력 필드의 목록 축소

+0

[http://stackoverflow.com/questions/7734554/how-to-filter-your-jquery-autocomplete-data-while-typing# : 귀하의 경우

답변 - 7736994] (http://stackoverflow.com/questions/7734554/how-to-filter-your-jquery-autocomplete-data-while-typing#answer-7736994) – Victor

+0

나는이 문제를 해결하기 위해이 솔루션을 시도했지만, 이것은 내가 시도한 것입니다. http://jsfiddle.net/71puvk59/ 첫 번째 필드에 Test를 입력하면 자동 완성 목록에 1 개의 레코드 만 표시 될 수 있습니다. – user3253002

답변

1

this answer에 따라 사용자가 검색 기능을 무시하고 모든 필터를 적용 할 수 있습니다 :

("#ContactPerson").autocomplete({ 
       source: [{"value":"XYZ","name":"ZJL","group":"Test"},...] 
    ... 

이것은 내가 지금까지 시도했지만, 그것이 작동하지 않는 것입니다.

var source = [ 
    {"value": "JL", "name": "JL", "group": "Test"}, 
    {"value": "MV", "name": "MV", "group": "Family"} 
]; 

$('#ContactPerson').autocomplete({ 
    source: source, 
    search: function (oEvent, oUi) { 
     // get current input value 
     var sValue = $(oEvent.target).val(); 

     //groupValue 
     var groupValue = $("#group").val(); 

     // init new search array 
     var aSearch = []; 

     // for each element in the source array ... 
     $(source).each(function (iIndex, sElement) { 

      var groupFilterMatch = ((groupValue && sElement.group.indexOf(groupValue) != -1) || !groupValue); 
      var nameFilterMatch = sElement.name.indexOf(sValue) != -1; 

      // ... APPLY YOUR FILTERS HERE 
      //Example: filter group, if it is defined, and filter name 
      if (groupFilterMatch && nameFilterMatch) { 
       // add element 
       aSearch.push(sElement); 
      } 
     }); 

     // change search array 
     $(this).autocomplete('option', 'source', aSearch); 
    } 
}); 

http://jsfiddle.net/vcarvalho/91Lj5nxx/

+0

감사합니다. 대소 문자를 구분하지 않도록하는 방법을 알고 있습니까? – user3253002

+1

환영합니다. 대소 문자를 구별하지 않으려면'''sElement.name.indexOf (sValue)'''를'''sElement.name.toLowerCase(). indexOf (sValue.toLowerCase())''' – Victor

관련 문제