2013-03-12 98 views
1

我在重定義_renderItems時遇到問題。問題是,它的設置項爲空,換言之,我得到一個錯誤jQuery autocomplete _renderItem將項目設置爲空

無法讀取空的特性「casValue」

代碼:

$(function() { 
     $('.CasNumber').autocomplete({ 
      source: function(request, response) { 
       $.ajax({ 
        url: //url of the page 
        dataType: "json", 
        data: { 
         search_word: request.term, 
        }, 
        success: function(data) { 
         response($.map(data.result, function(item) { 
          return { 
           label: item.Cas, 
           value: item.Cas, 
           casLabel: 'Cas No.', 
           casValue: item.Cas, 
           egLabel: 'Eg No.', 
           egValue: item.Eg, 
           REACHLabel: 'REACH No.', 
           REACHValue: item.ReachRegNumber, 
           indexLabel: 'Index-number', 
           indexValue: item.IndexNumber, 
           nameValue: item.Name, 
           data: item 
          } 
         })); 
        } 
       }); 
      }, 
      minLength: 1, 

      focus: function(event, ui) { 


       $(".CasNumber").val(ui.item.casValue); 
       return false; 
      }, 

      select: function(event, ui) { 
       log(ui.item.data, this); 
       return false; 
      }, 
      open: function() { 
       $(this).removeClass("ui-corner-all").addClass("ui-corner-top"); 
      }, 
      close: function() { 
       $(this).removeClass("ui-corner-top").addClass("ui-corner-all"); 
      } 
     }) 
     .data("ui-autocomplete")._renderItem = function(ul, item) { 
      return $("<li>") 
      .data("item.ui-autocomplete", item) 
      .append("//Format of the drop down list is here") 
      .appendTo(ul); 
     }; 
    }); 

當我通過調試器的代碼在_renderItem中正確獲取項目值,它完美地繪製出列表,但一旦開始聚焦(在項目選擇後)ui.item parameter被設置爲空。

回答

0

結構中的第一個元素需要錨定,以使其正常工作。

+0

可以添加一個代碼示例,以顯示其中/你如何添加錨? – emeraldjava 2014-01-10 18:24:55

1

權項的渲染:

_renderItem = function(ul, item) { 
      return $("<li>") 
     .attr("data-value", item.value) 
     .append("<a></a>") 
     .append(item.value) 
     .appendTo(ul); 
    }; 

注意標籤<一個>