Bootstrap multiselect - 在单击中取消选择/取消选中所有选项时触发事件'onSelectAll'或'onDeselectAll'(需要最佳方式)

时间:2016-07-01 00:25:23

标签: javascript jquery jquery-plugins bootstrap-multiselect

我想在'onDeselectAll'事件上放置一个监听器,但是'onDeselectAll' - 在最新版本的Bootstrap multiselect插件中不存在。

我想要那样的东西

        $('.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");
            }
        });

最好的方法是什么?

解决此问题的最佳解决方案是什么?我发现this fork与'onDeselectAll'不完全相同但是很接近。还有什么更好的吗?

我在旧版本中存在此选项存在于旧版本中,为什么会将其删除?

我发现开发人员对此提出了issue。这是否意味着他们计划修复它?当α

我正在检查Select2是否可以“全部选择”是否可能?

我该怎么办?等等,去旧版本或使用另一个fork使用另一个插件?

这是一个理想的结果。

enter image description here

3 个答案:

答案 0 :(得分:2)

您的代码是正确的,这些事件已经存在:http://davidstutz.github.io/bootstrap-multiselect/#configuration-options-onSelectAll

但是......有一个错误。我在这个项目上创建了一个fork来修复这个bug ...我已经做了一个等待合并的pull请求。

拉取请求:https://github.com/davidstutz/bootstrap-multiselect/pull/764/files

My Fork:https://github.com/lmcarreiro/bootstrap-multiselect

答案 1 :(得分:0)

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

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

这是验证没有选择任何内容的函数:

function unselectAll(){
    if($('#yourID :selected').length==0){
        //Do what you need here
    }
}

答案 2 :(得分:0)

是的,这也是我遇到的一个错误,因此您可以考虑进行类似的操作

$(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)
    }
})