Javascript 引导多选择-触发事件';onSelectAll';或';onDeselectAll';在一次单击中取消选择/取消选中所有选项时(需要最佳方式)

Javascript 引导多选择-触发事件';onSelectAll';或';onDeselectAll';在一次单击中取消选择/取消选中所有选项时(需要最佳方式),javascript,jquery,jquery-plugins,bootstrap-multiselect,Javascript,Jquery,Jquery Plugins,Bootstrap Multiselect,我想在“onDeselectAll”事件上设置一个侦听器,但最新版本的插件中不存在“onDeselectAll” 我想要那样的东西 $('.multiselect').multiselect({ enableFiltering: true, enableCaseInsensitiveFiltering: true, includeSelectAllOption: true, inclu

我想在“onDeselectAll”事件上设置一个侦听器,但最新版本的插件中不存在“onDeselectAll”

我想要那样的东西

        $('.multiselect').multiselect({
            enableFiltering: true,
            enableCaseInsensitiveFiltering: true,
            includeSelectAllOption: true,
            includeSelectAllDivider: true,
            maxHeight: 400,
            onSelectAll: function () {
                console.log("select-all-nonreq");
            },
            onDeselectAll: function () {
                console.log("deselect-all-nonreq");
            }
        });
最好的方法是什么

解决这个问题最好的方法是什么?我发现与“onDeselectAll”不太一样,但很接近。还有更好的吗

我发现这个选项存在于旧版本中,为什么他们要删除它

我发现开发人员对此做出了很大的改进。这是否意味着他们正在计划修复它?什么时候

我正在检查Select2是否可以执行“全选”功能。是否可以

我该怎么办?等等,要使用旧版本还是使用另一个fork使用另一个插件

这是一个理想的结果


您的代码是正确的,这些事件已经存在:

但是。。。有一只虫子。我在这个项目上创建了一个fork来修复这个bug。。。我已经发出了一个正在等待合并的请求

拉取请求:


My Fork:

我在HTML中添加了一个
onchange
函数,该函数计算选择了多少选项,并且它正在工作:

<select id="yourID" class="custom-select" onchange="unselectAll();" multiple>

这是我遇到的一个bug,所以你可以考虑去做这样的事情

$(document).on('change','.multiselect',function(){
    var labels = [];
    var brands = $('#field option:selected');
    $(brands).each(function(index, brand){
        labels.push($(this).text());
    });
    var values = $("#field").val();
    if(values.length > 0){
        console.log(labels);
        console.log(values)
    }
})

谢谢,但下一步是什么?我们是否需要等待产品负责人接受您的建议?顺便说一句,“onDeselectAll”-不存在。并且文档不保证在取消选择时触发“onSelectAll”。这就是为什么我不确定它是否是bug的原因。@YevGeniyafanasysev您可以等到产品所有者接受我的建议,或者您可以在my fork()上获得带有此更正的版本,但它不是正式版本…onDeselectAll事件在文档中不存在,但在代码中它存在。如果您在js文件中找到“onDeselectAll”,则会出现大量事件。如果您拥有github帐户,您可以在我的pull请求中订阅接收通知,这是页面右下角的一个按钮:
$(document).on('change','.multiselect',function(){
    var labels = [];
    var brands = $('#field option:selected');
    $(brands).each(function(index, brand){
        labels.push($(this).text());
    });
    var values = $("#field").val();
    if(values.length > 0){
        console.log(labels);
        console.log(values)
    }
})