当前位置: 首页 > 知识库问答 >
问题:

Select2多选-选择-在选择其他选项时以编程方式取消选择“全部”,在选择“全部”时取消选择其他选项

边意
2023-03-14

我使用select2版本4.0来实现MultiSelect,因为我在从API调用加载值时附加了'all'选项。当'All'被选中时,其他选项应该被取消选中,当我选择任何其他选项时,'All'选项应该被取消选中。

HTML:

<div class="form-group col-lg-6 field" >
  <label for="exampleFormControlSelect2">Location</label>
 <select class="form-control select2 select-etc-count" id="LOCATION" multiple="multiple" name="LOCATION[]">
  <span class="select2-counts" style="display:none;"></span>
  <span class="reset-link" style="display:none;" title=""> <i class="fa fa-refresh" onclick=""></i> </span>        
</select>

JS:

$('#LOCATION').on("select2:select", function (event) {
    selectId = $(this).attr("id");
    value    = $("#LOCATION").val();
    console.log(selectId,value);
    console.log("*********************");
    
    
    if(jQuery.inArray("all", value) != -1) {
        console.log("is in array");
        
        var $select = $('#LOCATION');
        var idToRemove = 'all';

        var values = $select.val();
        if (values) {
            console.log("values->",values);
            var i = values.indexOf(idToRemove);
            console.log("I->",i);
            if (i >= 0) {
                console.log("coming");
                values.splice(i, 1);
                console.log("values after->",values);
                $select.val(values).trigger('change.select2');
            }
        }
        
    } else {
        console.log("is NOT in array");
    } 
    
    
});

控制台值:

LOCATION (2) ["all", "trinidad and tobago"]
*********************
is in array
values-> (2) ["all", "trinidad and tobago"]
I-> 0
coming
values after-> ["trinidad and tobago"]

工作小提琴:

https://jsfiddle.net/harifrais/1ky2mbo5/7/

谁能帮我解决这个问题。

共有1个答案

孟昊空
2023-03-14

更改为values.splice(1);并检查

 类似资料:
  • 我希望,如果我选择“mammals”,动物选择选项只显示值为1的选项data-animal_class。 我知道如何获得哺乳动物值,但我不知道如何使用过滤器 这是我的代码:

  • 本文向大家介绍RadioButton实现选择后可取消选择,包括了RadioButton实现选择后可取消选择的使用技巧和注意事项,需要的朋友参考一下 Radiobutton是一种单选按钮,是由于RadioGroup管理下的一组按钮,所以一旦其中的一个button选中,再点击,就不能取消,想要取消调用Radiobutton的setchecked(boolean isChecked)的方法。 在网上找了

  • 我在选择元素的更改事件上绑定了一个事件: 当变更事件发生时,我如何访问被选中的元素?

  • 问题内容: 我想设置一个先前选择的要在页面加载时显示的选项。我用以下代码尝试了它: 与 但这是行不通的。有任何想法吗? 问题答案: 这绝对应该工作。确保已将代码放入:

  • 我想调用一个函数时,选择的任何选项。类似于这样: 但不知何故不起作用。有人能帮忙吗。 请注意 我不想捕获更改事件,如果我选择已经选择选项,则不会触发更改事件

  • 我正在开发一个使用JTree的java应用程序。我想归档的是,当我点击一个已经被选中的节点时,它会被取消选中。 我目前的解决方案是向jtree添加鼠标侦听器和树选择侦听器。但问题是,valueChanged只有在选择发生更改时才会被调用(而不是在两次选择同一节点时)。为了解决这个问题,我添加了一个布尔值,它指示是否第一次单击了节点,然后我在MouseRelease函数中处理取消选择。这是可行的,但

  • 下列的选项会根据你在第一步选择的文件格式而有所不同。 字段名行 Navicat 标识哪一行为字段名。 数据列 Navicat 在哪一行开始和停止读取实际数据。 【注意】如果在文件中没有字段名,请取消勾选字段名行选项。 日期格式 指定日期的格式。 四位数年份 若要以四位数显示年份,可勾选这个选项。 日期分隔符 指定日期的分隔符。 时间分隔符 指定时间的分隔符。 小数点符号 指定小数数值的小数点分隔符

  • 本文向大家介绍jQuery实现复选框全选/取消全选/反选及获得选择的值,包括了jQuery实现复选框全选/取消全选/反选及获得选择的值的使用技巧和注意事项,需要的朋友参考一下