问问题
1267 次
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 回答