2013-05-10 133 views
1

我目前在我的應用程序中使用了jQuery UI自動完成功能,我想通過將結果中的最後一個單詞轉換爲不同的顏色(比如藍色)來自定義結果的設計。爲此,我已經使用http://jqueryui.com/autocomplete/#custom-data如下:jQuery UI自動完成自定義搜索

$(input).autocomplete(config) 
     .data("ui-autocomplete")._renderItem = function (ul, item) { 
        return $("<li>").append("<a>" + item.label + " " + "<span class=\"blue\">" + item.explicitLabel + "</span>" + "</a>").appendTo(ul); 
       }; 

哪裏item.label是不硬道理item.explicitLabel自動完成結果纔是硬道理。我唯一的問題是,搜索時,最後一個字(explicitLabel)被忽略。這裏是一個例子:http://jsfiddle.net/japZB/。我需要做什麼才能搜索完整的輸出結果?

+1

可能的重複http://stackoverflow.com/questions/15846710/jquery-ui-autocomplete-search-from-multiple-attributes-of-one-array – billyonecan 2013-05-10 13:37:16

+0

是的,沒有。他有一個更復雜的問題。其實,我的問題的答案是在他的問題。 :) – 2013-05-10 13:43:32

回答

3

更直接的一種簡單的方法將增加額外的字段全文

var list = []; 
list.push({ 
    label: "This is a good test", partialLabel: "This is a good", explicitLabel: "test" 
}); 
list.push({ 
    label: "This is a bad test", partialLabel: "This is a bad", explicitLabel: "test" 
}); 
list.push({ 
label: "This is a bad nice day", partialLabel: "This is a nice", explicitLabel: "day" 
}); 

但是,這是在我看來矯枉過正。如果你擁有源列表格式,你可以有一些像這樣簡單

var list = []; 
list.push("This is a good test"); 
list.push("This is a bad test"); 
list.push("This is a bad nice day"); 

而且從字符串獲得最後一個單詞使用字符串操作來顏色故。 lastIndexOf將有助於獲得最後的空白區域(如果有的話)

+0

這就是當你跳入代碼而沒有研究文檔時會發生什麼。錯過了關於'label'和'value'屬性的整個部分。使用第一個解決方案,因爲第二個解決方案沒有真正應用(我有一個更復雜的實際情況,這個例子)。謝謝! – 2013-05-10 13:42:33