【问题标题】:Disable options on select2 after specific one is selected选择特定选项后禁用 select2 上的选项
【发布时间】:2016-02-09 10:20:48
【问题描述】:

我在我的网站中使用了一个 select2,假设有 10 个选项。所以我有这个js:

$("#myselect").select2({ 
    maximumSelectionLength: 3
});

选择选项1时,我想禁用Select2上的所有其他选项。不知何故,就像跳过 maximumSelectionLength 并突然只允许选择一个。但这只有在我选择选项 1 时才会发生。

例如,如果我选择选项 2,我只需要停用选项 1。

因此,一般来说,如果选择了其他选项,则选项 1 需要从最多 3 个选项中排除,并且应该停用所有其他选项,以防一开始就被选中。我希望我在描述中说得很清楚。

这样的事情可能吗?如何?

我试过这个>

if($("#myselect").val() == 1){
    $("#myselect").find("option").each(function(){
        if($(this).val() != 1){
            $(this).attr("disabled", "disabled");
        }
    });
}

这实际上在选择选项1时将禁用属性添加到所有选项,但不是在生成的select2 html代码上,仅在我的初始html上,所以它实际上不起作用。

提前致谢

【问题讨论】:

  • 添加disable属性后更新select2初始化。试试$("#myselect").select2("updateResults")
  • 这个'updateResults'是select2的一个选项吗?因为它似乎不起作用。
  • 检查 select2 插件的文档。基本上你将不得不重新初始化或调用插件的一些更新函数,因为如果选择,你已经更新了结构。
  • 其实这个可行。我只需要触发更改 $("#myselect").select2({maximumSelectionLength: 3}).trigger('selection:update');

标签: javascript jquery html jquery-select2 select2


【解决方案1】:

在@karan3112 推荐之后,我添加了这个

   $("#myselect").select2({maximumSelectionLength:3}).trigger('selection:update'); 

添加禁用属性后,效果很好。

【讨论】:

    猜你喜欢
    • 2015-09-24
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多