我正在使用以下代码在ajax文件中搜索带有自动完成插件的查询:
$("input.search_bar").autocomplete("/autocomplete/", {
scrollHeight: 300,
minChars: 3
});
搜索结果是HTML编码的名称,如:
鲍勃的商店(真的Bob%39s Store
)
Bill's Shop(真的是Bill%39s Shop
)
等...
自动完成下拉列表显示正确的HTML,如下所示:
鲍勃的商店 比尔的商店但是当我选择其中一个结果并且结果移动到输入字段时,输入字段会显示转义值,如下所示:
Bob%39s Store
如何使用jQuery Autocomplete插件格式化结果以在选择结果时显示未转义的值?
我尝试了以下插件功能,但没有任何运气:
$("input.search_bar").autocomplete("/autocomplete/", {
scrollHeight: 300,
minChars: 3,
formatResult: function(row) {
return unescape(row);
}
});
答案 0 :(得分:1)
试试这段代码,
$("input.search_bar").autocomplete("/autocomplete/", {
scrollHeight: 300,
minChars: 3,
formatResult: function(row) {
return $('<div/>').html(row).html();
}
});
答案 1 :(得分:1)
我遇到了同样的问题。 JSON输出的源是JSP文件。
JSON用法示例显示使用单引号来分隔我更改为双引号的建议条目。
直到我使用&lt; c:out value =“....”&gt;进行更改后,它仍然无效。标记为简单地使用$ {....}。这解决了问题。 &lt; c:out&gt;标签自动转义输出。
如果您不使用Java,请确保用于生成JSON的函数不会自动编码/转义值。直到我用一个单引号打了一个人的名字,我才注意到这一点。
答案 2 :(得分:0)
尝试decodeURI()
:
$("input.search_bar").autocomplete("/autocomplete/", {
scrollHeight: 300,
minChars: 3,
formatResult: function(row) {
return decodeURI(row);
}
});