【问题标题】:Bootstrap multiselect - to trigger event 'onSelectAll' or 'onDeselectAll' when De-select / Uncheck all options in a single click (best way needed)Bootstrap multiselect - 在单击取消选择/取消选中所有选项时触发事件“onSelectAll”或“onDeselectAll”(需要的最佳方式)
【发布时间】:2016-07-01 00:25:23
【问题描述】:

我想在 '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 使用另一个插件?

这是一个理想的结果。

【问题讨论】:

标签: javascript jquery jquery-plugins bootstrap-multiselect


【解决方案1】:

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

但是...有一个错误。我在这个项目上创建了一个分支来修复这个错误......我已经提出了一个正在等待合并的拉取请求。

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

我的叉子:https://github.com/lmcarreiro/bootstrap-multiselect

【讨论】:

  • 谢谢,但下一步是什么?我们是否需要等到产品负责人接受您的提议?
  • BTW "onDeselectAll" - 不存在。并且文档不承诺在取消选择时触发“onSelectAll”。这就是为什么我不确定它是否是一个错误。
  • @YevgeniyAfanasyev 你可以等到产品负责人接受我的提议,或者你可以在我的 fork (raw.githubusercontent.com/lmcarreiro/bootstrap-multiselect/…) 上得到这个更正的版本,但它不是正式版本...跨度>
  • onDeselectAll 事件在文档中不存在,但在代码中存在。如果在js文件中找到“onDeselectAll”,会出现很多情况。
  • 如果你有 github 账号,你可以在我的 pull request 中订阅接收通知,它是页面右下角的一个按钮:github.com/davidstutz/bootstrap-multiselect/pull/764
【解决方案2】:

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

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

这是验证未选择任何内容的功能:

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

【讨论】:

    【解决方案3】:

    是的,这也是我遇到的一个错误,因此您可以考虑这样做

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

    【讨论】:

      猜你喜欢
      • 2014-05-06
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 2021-01-21
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      相关资源
      最近更新 更多