2011-03-16 9 views
3

jQueryのオートコンプリート機能のカテゴリとカスタム表示の実装に問題があります。カテゴリと選択を含むjQuery自動補完

エントリの1つを選択すると、 'ui.item'が定義されていないというエラーが表示されます。私のコードは

$jq.widget("custom.categoryautocomplete", $jq.ui.autocomplete, { 
    _renderMenu: function(ul, items){ 
     var self = this; 
     var currentCategory = ""; 
     $jq.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); 
     }); 
    } 
}); 

$jq(function(){ 
    $jq("#tlf\\:tlfs").categoryautocomplete({ 
     source: getAutoCompleteSource(), 
     focus: function(event, ui){ 
      $jq("#tlf\\:tlfs").val(ui.item.label); 
      return false; 
     }, 
     select: function(event, ui){ 
      $jq("#tlf\\:tlfs").val(""); 

      // JavaScript code to select the row. 
      selectRow(ui.item.rownum); 

     return false; 
     } 
    }).data("categoryautocomplete")._renderItem = function (ul, item) { 
     return $jq("<li></li>") 
      .data("item.categoryautocomplete", item) 
      .append("<a>" + item.type +" - " + item.uid + "<br>" + item.desc + "</a>") 
      .appendTo(ul); 
    }; 
}); 

私は入力を開始すると、リストのドロップダウンを見ることができますので、私はJSONが整形式であると仮定しています。 'ui.item is undefined'エラーを引き起こす原因は何ですか?

編集:さらにテストした後、custom _renderItemメソッドを削除すると動作するように見えます。しかし、なぜそれが問題を引き起こしているのかわかりません。

答えて

3

私は自分自身の問題を理解しました。私は何を理解していませんでした

.data("item.categoryautocomplete", item) 

が正確にしました。読んだ後、

.data("item.autocomplete", item) 

に変更されました。

関連する問題