【问题标题】:How can I set maximumSelectionLength while closeOnSelect is false in Select2?如何在 Select2 中的 closeOnSelect 为 false 时设置 maximumSelectionLength?
【发布时间】:2016-02-02 22:27:58
【问题描述】:

我有以下代码:

$("#select2").select2({ closeOnSelect: false,
                        maximumSelectionLength: 5,
                        ...  // I have AJAX implemented here
                      });

当我将closeOnSelect 设置为false 并设置maximumSelectionLength 时,我可以毫无问题地选择5 个以上的项目。当我在选择了超过 5 个项目的情况下单击远离下拉菜单并尝试添加另一个时,我收到消息“您只能选择 5 个项目”。

是否有任何解决方法可以让这两个属性一起工作而不会发生冲突?

我目前正在使用 Select2 4.0.1。


更新:

我接受了 pratikwebdev 的建议并添加了以下代码:

$("#select2").select2({ closeOnSelect: false,
                        maximumSelectionLength: 5,
                        ...  // I have AJAX implemented here
}).on("change", function(e) {
    if(e.target.length == 5) {
        $("#select2").select2({closeOnSelect: true,
                               maximumSelectionLength: 5,
        });
    }
});

一旦我选择了 5 个项目,这实际上将关闭下拉列表,maximumSelectionLength 属性将正常工作。但是现在closeOnSelect 是真的,所以每次我选择一些东西时,下拉菜单都会关闭。

有没有办法切换closeOnSelect

【问题讨论】:

  • 当用户在下拉列表中选择任何值时,尝试是否可以触发change 事件。
  • @pratikwebdev 我试图在选择值时触发更改事件,但我不确定当长度达到 5 时如何关闭下拉列表。有什么想法吗?
  • 查看解决方案是否适合您。

标签: javascript jquery jquery-select2 jquery-select2-4 select2


【解决方案1】:

这应该可以正常工作。

  $("#select2").change(function(){
      var ele = $(this);
      if(ele.val().length==5)
      {
        ele.select2('close');
      }
  });

【讨论】:

  • 我只是试了一下,它似乎与我更新的代码有类似的错误:1)每次我选择一个项目时,下拉列表都会关闭,2)下拉列表中的列表现在缩短了到我选择的前 5 个选项,其余选项消失。
  • 哦,我没有看到您更新的代码。让我试一试。
  • 是的,做到了。非常感谢!
  • @sparky 太好了。这就是再次初始化选择的问题。我将仅使用第二种解决方案更新答案。我知道第一个解决方案不可行。
  • 有没有办法触发“你只能选择5个项目”标签出现,而不仅仅是关闭下拉菜单?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-24
  • 1970-01-01
相关资源
最近更新 更多