2012-08-27 2 views
0

이 웹 사이트에서 비슷한 문제가 발생했지만 코드에 어떤 문제가 있는지 알 수 없습니다. 내가 jquery 자동 완성을 사용하고 그 카테고리가 표시되지 않는 것을 제외하고는 잘 작동합니다. 나는 불을 지르고에서 디버깅을 시도했지만 나는 결코 얻을 것처럼 보일 "= var에 자신이"를 _renderMenu 내부원격 소스 및 카테고리로 jQuery 자동 완성

$.widget("custom.catcomplete", $.ui.autocomplete, { 
    _renderMenu: function (ul, items) { 
     var self = this; 
     var currentCategory = ""; 
     $.each(items, function (index, item) { 
      if (item.category != currentCategory) { 
       ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>"); 
       currentCategory = item.category; 
      } 
      self._renderItem(ul, item); 
     }); 
    } 
}); 

$("#m_tSearchEngine").autocomplete({ 
    source: function (request, response) { 
     $.ajax({ 
      url: '../../Class/SearchEngine.asmx/GetSearchEngineItems', 
      data: "{ 'criteria': '" + $("#m_tSearchEngine").val() + "'}", 
      dataType: "json", 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      success: function (data) { 
       var c = eval(data.d); 
       response($.map(c, function (item) { 
        return { 
         label: item.Name, 
         value: item.Name, 
         id: item.Id, 
         category: item.category, 
         subCategory: item.Type, 
         secondSubCategory: item.SecondType 
        } 
       })) 
      }, 
      error: function (XMLHttpRequest, textStatus, error) { 
       //alert(textStatus); 
      } 
     }); 
    }, 
    minLength: 1, 
    select: function (event, ui) { 
     location.href = "../../Literature/Pages/Literature.aspx?category=" + ui.item.category + "&subCategory=" + ui.item.subCategory + "&secondSubCategory=" + ui.item.secondSubCategory; 
    } 
}); 

이 내 JSON이 모습입니다 : 나는 마침내 내 문제를 발견

[{"category":1,"Id":49,"Name":"4800H","Type":7,"SecondType":0},{"category":1,"Id":86,"Name":"4900H","Type":7,"SecondType":0},{"category":2,"Id":1342,"Name":"D-DA1000HP-PSM(__)DBF","Type":25,"SecondType":54}] 

답변

1

.

대신

$("#m_tSearchEngine").autocomplete 

를 사용하는 나는

$("#m_tSearchEngine").catcomplete 
를 사용했다