通过将HTML放入“标签”响应中,JQuery自动完成格式化

时间:2011-06-18 10:06:17

标签: php javascript jquery jquery-ui autocomplete

我正在使用JQuery自动完成并发送带有“label”和“value”的响应。 我正在尝试让标签格式化HTML。 json_encode转义了我试图通过的html格式。

我应该这样做吗?如何使json_encode不能转义html格式(它将“/”更改为“\ /”)?

示例代码:

$return[$i]['label'] = $row['text'];
$return[$i]['label'] = "<span style='font-weight:bold;'>" . $row['text'] . "</span> - " . row['name'];  

json_encode($return);

当我手动检查网址响应时,我可以看到他正在逃避“”到“&lt; \ / span&gt;”

1 个答案:

答案 0 :(得分:4)

我不确定您使用的是哪种自动播放功能。如果您使用的是http://jqueryui.com/demos/autocomplete/,则问题不在于json,标签默认情况下不支持html

标签始终被视为文本,如果您希望将标签视为html,则可以使用Scott González' html extension。这些演示都集中在源选项的不同变体上 - 寻找与您的用例匹配的变体,并查看代码

你可以这样做。代码正在做的是以黄色显示自动完成匹配文本。

function autoCompleteRender(ul, item) {
    var searchTerm = this.term;
    var itemLabel = item.label;
    itemLabel = itemLabel.replace(new RegExp("(" + searchTerm + ")", "gi"), '<strong class="itemhover">$1</strong>');
    return $("<li></li>").data("item.autocomplete", item).append("<a>" + itemLabel + "</a>").appendTo(ul);
}


$(yourselector).autocomplete({
        source: function(request, response) {
            //your source
        }
    }).data("autocomplete")._renderItem = autoCompleteRender;