4

我遇到了jQuery自動完成問題。我是定製,以 顯示了兩個類型的項目:jQuery自動完成自定義_renderItem問題

  • 實際匹配的搜索字符串和
  • 建議(拼寫更正,相關的關鍵字等)

後端做所有的工作就此而言;自動完成只是提供兩個列表。

圖片可以更好地解釋:

http://shot.ninjaloot.se/20120412.141112.png(該數據僅僅是虛擬而開發的數據使用,並且造型尚未完成)

雖然呈現作品,選擇(點擊或以其他方式)的在 項目拋出一個異常,這是很難調試:

TypeError: 'undefined' is not an object (evaluating 'ui.item.data') 

據我瞭解,在menu.selected功能被賦予了ui參數 有一個未定義的item密鑰。

爲什麼會發生這種情況,我該怎麼辦?如果我註釋掉我的自定義渲染器 ,選擇工作。

這是我的自定義渲染器功能。它已經逐步從 UI源文件中提取,然後擴展以執行我的自定義haxing。

$input.data("autocomplete")._renderItem = function(ul, item) { 
    var cls = 'ui-menu-item'; 

    if(item.label === null) { 
     cls += ' center disabled'; 
     item.label = '-- perhaps thou meaneth --'; 
    } 

    return $("<li></li>") 
    .data("item.autocomplete", item) 
    .append("<a class='ui-corner-all'>" + item.label + "</a>") 
    .addClass(cls) 
    .appendTo(ul); 
}; 

如果需要更多的代碼,我很樂意提供它!

+0

你能顯示一個代碼塊嗎?我們有同樣的問題。 – chrisvillanueva 2012-08-16 18:13:09

+0

與底部示例相同,但第二行僅爲「var cls ='';」而不是用ui-menu-item定義它。 – 2012-08-23 15:54:21

+1

您應該將您的解決方案作爲實際答案發布,而不是編輯您的問題。 – lifo 2012-12-13 14:14:35

回答

1

自我解答!我自己設法解決了這個問題。出乎意料的是,如果手動添加類「ui-menu-item」,則菜單項被視爲已完成,並且不會進行任何後處理,後處理對於該功能至關重要。如果我不手動添加這個類,它就可以工作。