JQuery通过将HTML放入“;标签“;回答

JQuery auto-complete formatting by putting HTML in "label" response

本文关键字:标签 回答 放入 HTML JQuery      更新时间:2023-09-26

我使用JQuery自动完成并发送带有"label"answers"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);

当我手动检查url响应时,我可以看到他正在将"转义为"<''/span>"

我不确定您使用的是哪种自动完成。如果您正在使用http://jqueryui.com/demos/autocomplete/,你的问题不是json,标签默认不支持html

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

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

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;