2014-02-19 66 views
1

我一直在堅持搜索幾個小時,我似乎無法弄清楚我需要做什麼。我在JQuery UI 1.8.16中使用了較舊版本的Autocomplete。悲傷地問,我不能升級它。 我正在嘗試設置自定義數據顯示,以便使用文檔中的「自定義數據」示例。我的代碼是按照例子期望的格式正確構造的,但是我添加了一些我需要的其他鍵。我的結構看起來像我在這個jsBin中提供的。 http://jsbin.com/zut/1/editJQuery UI自動完成選擇返回undefined

我需要覆蓋選擇和聚焦功能。遵循這些例子。我爲模板部分定義了此代碼。

 .data("autocomplete")._renderItem = function(ul, item) { 
       var template; 
       if (item.isActive === true) { 
        template = "<a>" + item.label + item.desc + item.status + "</a>"; 
       } else { 
        template = "<a >" + item.label + item.desc + "<span class='inactive'>" + item.status 
        + "</span></a>"; 
       } 

       return $("<li>") 
        .append(template) // .append("<a>" + item.label + item.desc + "</a>") 
        .appendTo(ul); 
     }; 
    }, 

此渲染模板罰款,但是我收到一個「不確定」中選擇了「用戶界面」參數和具體圍繞「類型錯誤:ui.item是未定義」

我試圖改變。數據( 「autocomplete」).data(「ui-autocomplete」)這將擺脫「TypeError:ui.item未定義」,但現在所有額外的模板數據都消失了,我只顯示標籤。

我把它放回去,然後使用._renderItemData vs ._renderItem搞砸了,結果與上面相同。原來的錯誤消失了,但所有額外的文本都消失了。

我有點虧了,所有的幫助將不勝感激!我只想顯示額外的自定義文本,同時仍覆蓋選擇和焦點值。到目前爲止,我發現的所有「修復」似乎都解決了一個問題,但是打破了所有「自定義數據」。

回答

1

你缺少設置爲數據設置爲李

.data("autocomplete")._renderItem = function (ul, item) { 
    var template; 
    if (item.isActive === true) { 
     template = "<a>" + item.label + item.desc + item.status + "</a>"; 
    } else { 
     template = "<a >" + item.label + item.desc + "<span class='inactive'>" + item.status + "</span></a>"; 
    } 

    return $("<li>") 
     //missing this 
     .data("item.autocomplete", item) 
     .append(template) 
     .appendTo(ul); 
}; 

演示:Fiddle

查看原始執行情況http://code.jquery.com/ui/1.8.16/jquery-ui.js有這個數據值設置

+0

我無法表達我有多現在就想用我的電腦顯示器打個盹。談論看WAAAAAAAY太久了。謝謝你完全做到了! – user2217623

+0

我在這方面花了太多時間。謝謝! – MattParra