jquery select2多选: How can I check if options is selected or not?

标签 jquery multi-select jquery-select2

我需要捕获这两个事件:

  • 选择第一个选项
  • 取消选择所有选项

原因是 - 当选择第一个选项或取消选择所有先前选择的选项时,我想禁用另一个下拉列表(它负责我的多选内容)。

更新:

$('.projectSelector').on('change', function() {
        var targetProject_id = $('#project-id :selected').val();
        updateParticpantDropdown(targetProject_id);
    });

    function updateParticpantDropdown(selectedProjectId){

        $.ajax({
            type: "POST",
            url: '/xx/projects/xx/'+ selectedProjectId,
            dataType : "json",
            success: function (response, status) {
                if(status === "success") {

                    //console.log('success post');

                    if(response.result == "error") {

                        alert(response.message);

                    }else if (response.result == "success"){

                        var data = response.data;

                        $(".participantSelector").empty().select2({
                            placeholder: "Click here to select participants for above selected project",
                            allowClear: false,
                            data: data
                        });

                    }
                } else if(status === "error") {
                    // Ajax Post call failed
                    console.log('fatal ajax post call failed');
                }
            }
        });
}

这是我的ajax部分。当我从下拉列表“.projectSelector”中选择时,我会更新我的多选“.participantSelector”。

到目前为止工作正常!

我想要的不是捕获“.participantSelector”中的第一个选择以禁用“.projectSelector”。反之,如果“.participantSelector”中未选择任何内容,则将“.projectSelector”设置为事件状态。

我的 html 看起来像这样:

<select name="participant_id[]" multiple="multiple" class="form-control select2me participantSelector" required="required" id="participant-id"><option value=""></option></select>

从我尝试过的文档中:

$('select').on('select2:select', function (evt) {
  // Do something
});

但这确实会在下拉列表中的选择时触发 - 但不会在我的多选中进行选择。

顺便说一句,我在多选中选择时显示此错误:

TypeError: b.dataAdapter is null

最佳答案

您可以使用 first() 方法获取列表中的第一项。请参阅documentation ,您可以使用 :selected 选择器获取选定的选项。请参阅documentation .

尝试如下:

$('#select').on('change', function() {
    var first = $(this).find('option').first().val();
    var none = $(this).find('option:selected').length;

    if ($(this).val() == first) {
        alert('First item selected!');
    } else if (none == 0) {
        alert('All items deselected!');
    }
});

关于jquery select2多选: How can I check if options is selected or not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41868788/

相关文章:

javascript - 制作动态图像跟随鼠标

javascript - 在具有 optGroup 的 select2 中选择一个值

javascript - 从非嵌套的 div 构建嵌套数组?

javascript - 如何防止指定任务触发

javascript - 从 angularjs 中删除 # 并使 url 变得漂亮

javascript - Select2.js 错误 : Cannot read property 'length' of undefined

javascript - (X-Editable) with (Select2 Tags) 不起作用,无法填充当前标签并跟踪和添加/删除标签

jQuery UI 多选小部件不会关闭

jquery - JQGrid - 多选

javascript - ExtJS-3、Ext.grid.GridPanel、多行复选框 : how do I submit all checked items at once?