如何从外部列表框中控制select2选择框?

和平爱

我正在使用select2多重选择框。我想在外部列表中显示选择的结果。从该列表中,我还希望能够再次删除这些项目。它或多或少地起作用,但是从外部列表中删除了一些项目并通过选择框将其再次插入后,它变得有点麻烦了。我将此处的所有内容可视化以说明我的问题:

$(function () {
  //Initialize Select2 Elements
  $(".select2").select2();
});

$(document).ready(function () {

  $(".select2").on("change", function () {
    $(".select2-selection__rendered li").each(function () {
      var title = $(this).attr('title');
      if (typeof title !== typeof undefined && title !== false) {
        var animal = title.replace(/ /g, "");
        $('#' + animal).show();
      }
    });
  });


  $(".remove").click(function () {
    $(this).closest(".animals").hide();
    var className = $($(this).closest("li")).attr('id');
    $(".select2-selection__rendered li[title='" + className + "']").remove();
  });

});
.remove{cursor:pointer}
<link href="https://select2.github.io/dist/css/select2.min.css" rel="stylesheet"/>
<link href="https://select2.github.io/css/bootstrap.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://select2.github.io/vendor/js/bootstrap.min.js"></script>
<script src="https://select2.github.io/dist/js/select2.full.js"></script>

<div class="form-group">
  <select class=" form-control select2" multiple="multiple" data-placeholder="+ select" style="width: 100%;">
    <option>Cat</option>
    <option>Dog</option>
    <option>Bird</option>
  </select>
</div>

<ul>
  <li class="animals" id="Cat" style="display:none">Cat <a class="remove">x</a></li>
  <li class="animals" id="Dog" style="display:none">Dog <a class="remove">x</a></li>
  <li class="animals" id="Bird" style="display:none">Bird <a class="remove">x</a></li>
</ul>

扎卡里亚·阿查尔基(Zakaria Acharki)

问题在于您从中删除项目的方式select2,我建议给您option一个'sa值,然后当您单击li时获得标题并value=title从选定值列表中删除具有匹配项的选项,然后将新数组重新分配给您选择的::

var new_values = $(".select2").val().filter(item => item !== className);
$(".select2").val(new_values).change();

注意:ready需要一个功能就不需要两个功能。

希望这可以帮助。

使用filter()方法示例

$(function () {
  $(".select2").select2();

  $(".select2").on("change", function () {
    $(".select2-selection__rendered li").each(function () {
      var title = $(this).attr('title');
      
      if (typeof title !== typeof undefined && title !== false) {
        var animal = title.replace(/ /g, "");
        $('#' + animal).show();
      }
    });
  });


  $(".remove").click(function () {
    $(this).closest(".animals").hide();
    
    var className = $($(this).closest("li")).attr('id');
    var new_values = $(".select2").val().filter(item => item !== className);
    
    $(".select2").val(new_values).change();
  });

});
.remove{cursor:pointer}
<link href="https://select2.github.io/dist/css/select2.min.css" rel="stylesheet"/>
<link href="https://select2.github.io/css/bootstrap.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://select2.github.io/vendor/js/bootstrap.min.js"></script>
<script src="https://select2.github.io/dist/js/select2.full.js"></script>

<div class="form-group">
  <select class=" form-control select2" multiple="multiple" data-placeholder="+ select" style="width: 100%;">
    <option value='Cat'>Cat</option>
    <option value='Dog'>Dog</option>
    <option value='Bird'>Bird</option>
  </select>
</div>

<ul>
  <li class="animals" id="Cat" style="display:none">Cat <a class="remove">x</a></li>
  <li class="animals" id="Dog" style="display:none">Dog <a class="remove">x</a></li>
  <li class="animals" id="Bird" style="display:none">Bird <a class="remove">x</a></li>
</ul>

使用$.each()方法示例

$(function () {
  $(".select2").select2();

  $(".select2").on("change", function () {
    $(".select2-selection__rendered li").each(function () {
      var title = $(this).attr('title');

      if (typeof title !== typeof undefined && title !== false) {
        var animal = title.replace(/ /g, "");
        $('#' + animal).show();
      }
    });
  });


  $(".remove").click(function () {
    $(this).closest(".animals").hide();

    var className = $($(this).closest("li")).attr('id');

    var new_values = [];

    $.each($(".select2").val(),function(index, item){
      if( item !== className )
        new_values.push(item);
    })

    $(".select2").val(new_values).change();
  });

});
.remove{cursor:pointer}
<link href="https://select2.github.io/dist/css/select2.min.css" rel="stylesheet"/>
<link href="https://select2.github.io/css/bootstrap.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://select2.github.io/vendor/js/bootstrap.min.js"></script>
<script src="https://select2.github.io/dist/js/select2.full.js"></script>

<div class="form-group">
  <select class=" form-control select2" multiple="multiple" data-placeholder="+ select" style="width: 100%;">
    <option value='Cat'>Cat</option>
    <option value='Dog'>Dog</option>
    <option value='Bird'>Bird</option>
  </select>
</div>

<ul>
  <li class="animals" id="Cat" style="display:none">Cat <a class="remove">x</a></li>
  <li class="animals" id="Dog" style="display:none">Dog <a class="remove">x</a></li>
  <li class="animals" id="Bird" style="display:none">Bird <a class="remove">x</a></li>
</ul>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何编码组合框以根据组合框中的选择在列表框中显示列表?

来自分类Dev

如何确定列表框中是否选择了任何行

来自分类Dev

如何限制tkinter列表框中的选择数量?

来自分类Dev

如何在列表框中投射选择的项目

来自分类Dev

如何限制tkinter列表框中的选择数量?

来自分类Dev

如何随机选择列表框中的所有项目?

来自分类Dev

如何隐藏jquery选择的下拉列表框中的值?

来自分类Dev

如何从列表框选择中填充组合框?

来自分类Dev

如何重新选择列表框中的项目?

来自分类Dev

如何取消选择列表框的项目?

来自分类Dev

如何从列表框中选择内容

来自分类Dev

如何停止列表框自动选择?

来自分类Dev

在列表框中隐藏选择栏

来自分类Dev

从选择中填充列表框,python

来自分类Dev

列表框中的选择对齐问题

来自分类Dev

更改列表框中的选择

来自分类Dev

如何在我的 select2 选择框中显示我选择的图标?

来自分类Dev

如何在jQuery select2远程选择框中设置默认选定值的顺序?

来自分类Dev

通过使用TCL中的键盘控制来选择列表框显示项?

来自分类Dev

Excel VBA-如何在列表框中取消选择预先选择的项目

来自分类Dev

如何将列表框添加到循环中的列表框列表中?

来自分类Dev

从数据库中删除列表框中的选择

来自分类Dev

如何将列表框ItemsSource与外部资源字典中的数组绑定

来自分类Dev

如何在多选列表框中自动选择与表中的值相关的项目?

来自分类Dev

从2个列表框中选择镜像

来自分类Dev

如何找到在列表框中选择的项目数量?

来自分类Dev

应用加载时如何选择列表框?

来自分类Dev

离子/如何在列表框中选择多个项目?

来自分类Dev

如何根据组合框选择更改列表框的内容?

Related 相关文章

  1. 1

    如何编码组合框以根据组合框中的选择在列表框中显示列表?

  2. 2

    如何确定列表框中是否选择了任何行

  3. 3

    如何限制tkinter列表框中的选择数量?

  4. 4

    如何在列表框中投射选择的项目

  5. 5

    如何限制tkinter列表框中的选择数量?

  6. 6

    如何随机选择列表框中的所有项目?

  7. 7

    如何隐藏jquery选择的下拉列表框中的值?

  8. 8

    如何从列表框选择中填充组合框?

  9. 9

    如何重新选择列表框中的项目?

  10. 10

    如何取消选择列表框的项目?

  11. 11

    如何从列表框中选择内容

  12. 12

    如何停止列表框自动选择?

  13. 13

    在列表框中隐藏选择栏

  14. 14

    从选择中填充列表框,python

  15. 15

    列表框中的选择对齐问题

  16. 16

    更改列表框中的选择

  17. 17

    如何在我的 select2 选择框中显示我选择的图标?

  18. 18

    如何在jQuery select2远程选择框中设置默认选定值的顺序?

  19. 19

    通过使用TCL中的键盘控制来选择列表框显示项?

  20. 20

    Excel VBA-如何在列表框中取消选择预先选择的项目

  21. 21

    如何将列表框添加到循环中的列表框列表中?

  22. 22

    从数据库中删除列表框中的选择

  23. 23

    如何将列表框ItemsSource与外部资源字典中的数组绑定

  24. 24

    如何在多选列表框中自动选择与表中的值相关的项目?

  25. 25

    从2个列表框中选择镜像

  26. 26

    如何找到在列表框中选择的项目数量?

  27. 27

    应用加载时如何选择列表框?

  28. 28

    离子/如何在列表框中选择多个项目?

  29. 29

    如何根据组合框选择更改列表框的内容?

热门标签

归档