【问题标题】:Select2 - Prevent clearing of template on changeSelect2 - 防止在更改时清除模板
【发布时间】:2019-10-11 05:01:49
【问题描述】:

我有一个启用了多重设置的Select2 字段和一个包含输入字段的自定义 HTML 选择模板。

但是,似乎每当添加或删除新选项时,在自定义输入字段中输入的文本都会丢失 - 看起来 Select2 在更改事件上重新初始化/重置模板。

即使在选择/删除项目之后,是否有办法保留所有选项项目上输入的文本?

var stopOpening = false;

$('#my-select').select2({
  width: '100%',
  multiple: true,
  templateSelection: function(item) {
    var $result = $('<span  class="label">' + item.text + '</span><input class="input" placeholder="Input Text Here" onclick="clickMe()">');
    return $result;
  }
}).on({
  "select2:unselecting": function(e) {
    if (e.params.args.originalEvent.target.className === 'input') {
      e.preventDefault();
    }
  },
  "select2:opening": function(e) {
    if (stopOpening == true) {
      stopOpening = false;
      e.preventDefault();
    }
  }
});

clickMe = function() {
  stopOpening = true;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.10/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.10/js/select2.min.js"></script>

<select id="my-select">
  <option>red</option>
  <option>blue</option>
  <option>green</option>
  <option>yellow</option>
  <option>white</option>
  <option>black</option>
</select>

【问题讨论】:

    标签: javascript jquery jquery-select2


    【解决方案1】:

    你要返回的结果必须是这样的

    var $result = $('<span  class="label">' + item.text + '</span>');
    

    不是这样的

    $result = $('<span  class="label">' + item.text + '</span><input class="input" placeholder="Input Text Here" onclick="clickMe()">');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 2013-07-23
      • 2014-11-24
      • 1970-01-01
      相关资源
      最近更新 更多