2010-12-27 2 views
0

나는 자동 완성 세트와 완벽하게 잘 작동과 텍스트 상자가 있습니다. 그러나 나는 matchSubset 기능에의 jQuery 자동 완성 : matchSubset 옵션 문제

if (!options.matchCase) 
    s = s.toLowerCase(); 
var i = s.indexOf(sub); 

에서이 autocomplete.js 파일의 오류를 던지는 matchSubset 옵션을 사용하려고 할 때. 'Object does not support this property or method'오류가 발생합니다. 아래는 내 자동 완성 코드입니다.

$('#txtUsers') 
    .autocomplete("AjaxHandler.asmx/GetUserData", { 
     width: 320, 
     max: 10, 
     minChars: 3, 
     matchSubset: true, 
     formatItem: function(data, i, n, value) { 
      return value.FullName + " (" + value.DepartmentName + ")"; 
     }, 
     parse: function(data) { 
      var items = eval($(data).text()); 
      return $.map(items, function(row, i) { 
       return { 
        data: row, 
        value: row, 
        result: row 
       } 
      }); 
     } 
    }) 
    .result(function(event, data, formatted, text) { 
     if (data) { 
      $(this).val(data[0].FullName); 
     } 
    }); 

처음 3자를 입력하면 정상적으로 작동합니다. 그러나 내가 4 번째 문자를 입력하면 위에서 언급 한 오류가 발생합니다. 데이터를 파싱 할 때 실수를 저지르고 있습니까? 내 웹 서비스가 랩된 데이터를 제공하기 때문에 구문 분석 함수에서 데이터를 평가해야했습니다. matchSubset 옵션을 제거하면 코드가 제대로 작동하지만 매번 서버를 쿼리합니다. 어떤 도움이 필요합니까?


업데이트 : 나는 문제가 내 구문 분석 기능을 생각합니다. matchSubset 기능에 위의 코드에서, '들'- 나를 위해하면 FullName 같은 여러 값을 포함하는 객체가 어떻게 따라 내 구문 분석 기능에 DepartmentName 변경 등의 문자열 값을 것으로 예상된다?

+1

그 라인'VAR 항목 = 평가 ($ (데이터)는 .text는());'당신이 당신 앞에 data'이 오류가'에 무엇을 확인하려고 했 좀 비린내가 : 보이는? –

+0

글쎄 $ (데이터)는 .text()가 래핑 된 JSON을 반환 (이 것 때문에 오류를주는 함수의's'는 구문 분석 배열의-객체의 결과에서 '값'에 해당) 끈. 그것이 내가 객체를 얻기 위해 평가해야했던 이유입니다. – Ashish

답변

1

글쎄, 당신은 value을 문자열로 바꾸어야한다고 생각합니다 (면책 조항 : jQuery.autocomplete가 어떻게 작동하는지 실제로 모르겠습니다. 올바른 위치에서 문자열을 얻을 수있는 방법을 알고 있습니다 :)) . 그래서, 같은 것을 사용 또한

value: row.FullName + " (" + row.DepartmentName + ")" 

data 좀 더, 어쩌면 시도하는이 두 번 eval 확인?

+0

귀하의 권장 사항을 시도하고 있습니다. – Ashish

+0

고마워. 문제는 값이 객체라는 점입니다. 나는 그것을 문자열로 변환하고 매력처럼 일했습니다. 다시 한번 감사합니다. – Ashish