1

我目前在我的应用程序中使用 jQuery UI 自动完成功能,我想通过将结果中的最后一个单词变成不同的颜色(比如蓝色)来自定义结果的设计。为此,我使用了http://jqueryui.com/autocomplete/#custom-data,如下所示:

$(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/。我需要做什么才能在完整的输出结果中进行搜索?

4

1 回答 1

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将有助于获得最后的空白(如果有)

于 2013-05-10T13:26:51.897 回答