JQuery 通过将 HTML 放入“标签”来自动完成格式设置回复

发布于 2024-11-16 05:01:32 字数 426 浏览 0 评论 0原文

我正在使用 JQuery 自动完成功能并发送带有“标签”和“值”的响应。 我正在尝试让标签具有 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>”

I'm using JQuery auto-complete and sending a response with "label" and "value".
I'm trying to get the label to have formatted HTML. The json_encode escapes the html formatting I'm trying to pass through.

Should I do this differently? How can make json_encode not escape the html formatting (it changes "/" to "\/")?

Example code:

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

json_encode($return);

and when I just check the url response manually, I can see he's escaping the "" to "<\/span>"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奈何桥上唱咆哮 2024-11-23 05:01:32

我不确定您使用的是哪种自动完成功能。如果您使用 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;

I am not sure which auto complete you are using. If you are using http://jqueryui.com/demos/autocomplete/, your problem is not json the label doesn't support html by default

The label is always treated as text, if you want the label to be treated as html you can use Scott González' html extension. The demos all focus on different variations of the source-option - look for the one that matches your use case, and take a look at the code

You can do something like this. What the code is doing is showing the autocomplete matching text in yellow.

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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文