【问题标题】:Html text inside select option isn't rendering选择选项内的 HTML 文本未呈现
【发布时间】:2020-11-25 02:50:34
【问题描述】:

我已经使用 select2 在 select 的选项中呈现了 html 标签,如下所示:

$('#select2colors').append($('<option>', {
      value: color,
      text: `<i class="fas fa-square" style="color: ${color}; width:100%;"></i>`
}));

$("#select2colors").select2({
   escapeMarkup: function(markup) {
    return markup;
}

返回给我的是这样的:

问题:现在我正在尝试做同样的事情,同样的逻辑,但没有append() 部分。但不起作用,我正在寻找一种方法来做到这一点,但我没有找到任何东西。我正在做的是这样的:

<select class="form-control form-control-sm" id="select2colors">
       @foreach($colors as $color)
        <option value="#{{ $color }}">
             {{ htmlentities("<i class='fas fa-square' style='color: #".$color."; width:100%;'></i>") }}
         </option>
      @endforeach
</select>

$("#select2colors").select2({
   escapeMarkup: function(markup) {
    return markup;
}

我认为它的工作原理相同,但事实并非如此。 &lt;i&gt; 只是消失了,根本没有被渲染。有谁知道我怎样才能做到这一点才能和以前一样?

我得到的是,HTML 没有呈现:

【问题讨论】:

  • 为什么不使用追加?
  • 第一种方式是我的创建视图,第二种方式是我的编辑视图,我在那个视图中有数据,因为我使用@foreach,而且我正在使用外部 js 文件而且我无法将数据发送到这些文件。
  • 删除错误抑制后会发生什么?
  • 不是width=100%;,应该是width:100%;里面的style属性
  • @L.Flor 当附加&lt;i&gt;.....&lt;/i&gt; 是一个文本.. 而在第二个代码&lt;option&gt;&lt;i&gt;...&lt;/i&gt;&lt;/option&gt; i 这里是一个html .. 所以尝试找到一种方法将&lt;i&gt;....&lt;/i&gt; 转换为字符串/文本,我认为一切都会好起来的

标签: jquery laravel jquery-select2


【解决方案1】:

我在启动时所做的是直接放入 HTML,我必须将 HTML 转换为纯文本,就像 @Mohamed-Yousef 评论一样。首先我使用htmlentities(),但我需要的是html_entity_decode(),解释here

<?php
$orig = "I'll \"walk\" the <b>dog</b> now";

$a = htmlentities($orig);

$b = html_entity_decode($a);

echo $a; // I'll &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now

echo $b; // I'll "walk" the <b>dog</b> now
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 2017-08-10
    • 2021-05-05
    • 2015-09-03
    相关资源
    最近更新 更多