1
4

2 回答 2

0

我认为问题在于您正在获取最近找到的数据的标签并将其呈现为 HTML,而不是纯文本。因此,Berkeley您的自动完成功能不是 ,而是显示<strong>Ber</strong>keley

尝试解析它并在显示之前删除任何 HTML 标记:

function sanitize(text){
   var regex = /(<([^>]+)>)/ig;
   return text.replace(regex, "");
}

.data("autocomplete")._renderItem = function (ul, item) {
   return $("<li></li>")
   .data("item.autocomplete", item)
   .append($("<a></a>").html(sanitize(item.label)))
   .appendTo(ul);                
};

正则表达式是从这里提取的:Remove HTML Tags in Javascript with Regex

于 2012-10-11T16:20:12.787 回答
0

在下面找到我为我的问题找到的解决方案

现有代码:

response($.map(data, function (item) {
                    return { label: highlight(item.InstitutionName, request.term),
                        id: item.InstitutionId
                    };

解决方案:

response($.map(data, function (item) {
                    return { label: highlight(item.InstitutionName, request.term),
                        value: item.InstitutionName, 
                        id: item.InstitutionId
                    };

原始代码返回标签(其中嵌入了 html 标签)并且没有值。由于没有值,文本框使用标签显示。现在,我用我的文本(没有 html 标签)显式地分配文本框的值,这解决了我的问题。

这是它现在的样子的快照。

自动完成 - 修复后

于 2012-10-22T18:54:28.693 回答