选择2模板<span>文本</span>在选择渲染中

Select2 Templating <span>text</span> in selection render

本文关键字:gt 选择 span lt 模板 文本      更新时间:2023-09-26

我已经在选择风格化上积累了很多。我不是那么专业,我只是在学习,我还不能独自解决这个问题。我使用了select2,找到了最能接受的select表单类型。我试图理解出了什么问题,但我做不到。我想要这样的选择显示跨度与文本,而不仅仅是一个文本。就像照片1上的一样。但我一直只得到没有颜色标记的文本-图片#2。

在此处输入图像描述

我的代码是:

<div class="fieldset fieldset-1">
   <label for="color">Choose color</label>
   <select name="color" class="color-choose">                             
      <option value="grn">Green</option>
      <option value="blu">Blue</option>
      <option value="brn">Brown</option>
      <option value="blk">Black</option>
      <option value="red">Red</option>
      <option value="yel">Yellow</option>
      <option value="wht">White</option>                                  
    </select>
 </div>

和JS代码:

function formatState (state) {
  if (!state.id) { return state.text; }
  var $state = $(
    '<span class="color-element color-' + state.element.value + '">' + state.text + '</span>'
  );
  return $state;
};
$(".color-choose").select2({
  templateResult: formatState
});

所以我得到这样的结果:在这里输入图像描述

请帮我解决它!将不胜感激!

您只设置了结果的模板(使用templateResult),但没有设置选择的模板。Select2允许您为选择和结果使用不同的模板(请参见AJAX示例),因此必须使用templateSelection选项为选择设置渲染器。

$(".color-choose").select2({
  templateResult: formatState,
  templateSelection: formatState
});