2011-10-18 34 views
0

因此,我已閱讀至少20-30自動完成問題,所以我找不到任何解決方案。由於某些奇怪的原因,我不斷得到價值=未定義。這是我的代碼。另一個jQuery自動完成問題

//Cycles through each input and turns it into a person searcher. 
$.each(settings.input, function() { 
    var input = $(this); 
    input.autocomplete({ 
     delay: 70, 
     minLength: 2, 
     source: function(req, add) { 
      var val = input.val(); 

      $.post(VUI.SITE_URL + "scripts/autocomplete/_AutoComplete.php", {q: val, display_count: settings.displayCount, action: "user"}, function(data) { 
       data = eval("(" + data + ")"); 

       if (data.length > 0) { 
        var results = new Array(data.length); 
        $.each(data, function(key, value) { 
         results[key] = {desc: value, value: value.firstname + " " + value.lastname}; 
        }); 
        add(results); 
       } else { 
        add(["No results..."]); 
       } 
      }); 
     }, 
     select: function(event, ui) { 
      alert(ui.item ? ("Selected: " + ui.item.value + " aka " + ui.item.id) : "Nothing selected, input was " + this.value); 
     } 
    }) // end auto complete. 
    .data("autocomplete")._renderItem = function($ul, item) { 
     var $li = $("<li></li>"), 
      $inner = $("<div class='st-display side-content clearfix'style='padding-top:6px'></div>"), 
      $a = $("<a></a>"), 
      $img = $("<div class='image fl'></div>").html(ST.Image.getImage({ 
       uid: item.desc.uid, 
       type: ST.ST_IMAGE_TYPE_THUMBNAIL_SMALL 
      })), 
      $content = $("<div class='content fl'></div>").html(
       item.desc.firstname + " " + item.desc.lastname + "<br/>" + 
       "<span class='color:#979797;font-weight:bold'>" + item.desc.city + ", " + item.desc.state + "</span>" 
      ); 

     $inner.append($img).append($content); 
     $a.append($inner); 
     $li.append($a); 
     $ul.append($li); 

     return $ul; 
    } // end _renderItem */ 

我試圖讓它非常直接。但它不會工作! (它的Facebook像自動完成)。自動完成顯示正確(項目不等於未定義在這一點),但是當我突出顯示它,項目變得未定義,所以item.value(jquery.ui.1.8.13行6347)拋出異常!

有人看到問題嗎?


下面是一些有趣的事情...當我不使用的數據(「自動完成」)._ renderItem(定製完成)的選擇作品! ...那麼爲什麼重寫定製渲染會導致問題呢?我甚至回到了UL。

回答

1

在你的代碼的唯一的事那是從一個工作版本,我已經有了一個非常類似的東西不同的是,我初始化$li有:

var $li = $('<li></li>').data('item.autocomplete', item); 

的數據附加到列表項,我覺得自動完成插件用於在選擇時獲取值。

希望它有幫助

+0

哈。我看了我的另一個,我錯過了,我設置的數據項目! nj :) – Michael