简体   繁体   English

Select2 jquery 插件在结果中显示所选项目的数量而不是标签

[英]Select2 jquery plugin show number of selected items in the result instead of tags

I am using Select2 jQuery Plugin .我正在使用Select2 jQuery 插件

https://select2.github.io/ for reference https://select2.github.io/供参考

When I am using the multiple dropdown option.当我使用多个下拉选项时。 The result of selected items is shown as tags in a box but, I just want to show the number of items selected.所选项目的结果显示为框中的标签,但我只想显示所选项目的数量。

Is it possible with Select2 jQuery plugin是否可以使用Select2 jQuery 插件

HTML HTML

<select multiple style="width:100%">
  <option value="1">Name1</option>
  <option value="2">Name2</option>
  <option value="3">Name3</option>
  <option value="4">Name4</option>
  <option value="5">Name5</option>
  <option value="6">Name6</option>
  <option value="7">Name7</option>
</select>

JS JS

$('select').select2();

I want output as below我想要 output 如下

在此处输入图像描述

instead of tag like output.而不是像 output 这样的标签。

Example working Fiddle示例工作小提琴

You can add this code after initializing select2 您可以在初始化select2后添加此代码

$('select').on('select2:close', function (evt) {
        var uldiv = $(this).siblings('span.select2').find('ul')
        var count = $(this).select2('data').length
        if(count==0){
          uldiv.html("")
        }
        else{
          uldiv.html("<li>"+count+" items selected</li>")
        }

Ref: jsfiddle 参考: jsfiddle
Reference to select2 events: Here 对select2事件的引用: 这里

Edit: 编辑:
If you want to display a blank when user deselects everything, Use this fiddle: here 如果要在用户取消选择所有内容时显示空白,请使用此小提琴: 此处

Edit: 编辑:
Updated to remove flaw in deselection of data and changed it to main answer. 更新以消除数据取消选择方面的缺陷并将其更改为主要答案。 Fiddle: here 小提琴: 这里

Selectors can certainly be improved, but as a blueprint, adding a counter element on change and hiding the tags like this seems to work as asked. 选择器当然可以改进,但是作为一个蓝图,在更改时添加一个计数器元素并隐藏这样的标签似乎可以按要求工作。

 $('select').select2({closeOnSelect: false}).on("change", function(e) { $('.select2-selection__rendered li:not(.select2-search--inline)').hide(); $('.counter').remove(); var counter = $(".select2-selection__choice").length; $('.select2-selection__rendered').after('<div style="line-height: 28px; padding: 5px;" class="counter">'+counter+' selected</div>'); }); 
 .counter{ position:absolute; top:0px; right:5px; } .select2-search--inline{ background-color:Gainsboro; } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.full.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet"/> <select multiple style="width:100%" id="mySelect"> <option value="1">Name1</option> <option value="2">Name2</option> <option value="3">Name3</option> <option value="4">Name4</option> <option value="5">Name5</option> <option value="6">Name6</option> <option value="7">Name7</option> </select> 

although the answer is given.虽然给出了答案。

you can try this code.你可以试试这个代码。 first initialize than on close call it.首先初始化而不是关闭调用它。

   jQuery('.multi-select-pbwp').select2();
    $('.multi-select-pbwp').on('select2:close', function() {
        const $select = $(this);
        const numSelected = $select.select2('data').length;

        $select.next('span.select2').find('ul').html(function() {
            return `<li class="class="select2-selection__choice">${numSelected} selected</li>`;
        })
    });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM