jQuery AutoComplete - 结果显示编码字符

时间:2011-12-13 00:37:35

标签: jquery jquery-autocomplete

我正在使用以下代码在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);
    }
});

3 个答案:

答案 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);
    }
});