【问题标题】:Clear all of the list items of Select2 rather than the selected清除 Select2 的所有列表项而不是选中的
【发布时间】:2017-03-27 18:55:26
【问题描述】:

我有一个级联 Select2 ddl,当我选择主 ddl 时,我会毫无问题地填充 Detail ddl。另一方面,当我在 master 上选择另一个项目然后单击详细信息时,第一次详细信息 ddl 仅在一毫秒内列出以前的项目。因此,当主 ddl 的选定索引发生更改时,我需要清除除选定项之外的所有列表项。可能吗?我尝试了以下所有解决方法,但它们只清除所选项目。有什么想法吗?

$('#ProjectId').select2('data', null);
$('#ProjectId').select2('data', { id: null, text: null })
$('#ProjectId').empty();
$('#ProjectId').val(null).trigger("change");
$("#ProjectId").remove();
$('#ProjectId').val('').trigger('change');


@Html.DropDownListFor(m => m.ProjectId, Enumerable.Empty<SelectListItem>(), "Select")


$(document).ready(function () {

    var issueType = $("#ProjectId");

    issueType.select2({
        allowClear: true,
        ajax: {
            url: '/Controller/GetProjects',
            dataType: 'json',
            delay: 250,
            data: function (params) {
                return {
                    query: params.term, //search term
                    page: params.page,
                    id: selectedMasterId
                };
            },
            processResults: function (data, page) {
                var newData = [];
                $.each(data, function (index, item) {
                    newData.push({
                        id: item.Id,
                        text: item.Description
                    });
                });
                return { results: newData };
            },
            cache: true
        },
        escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
    }); 

});


$('#MasterId').change(function () {

    selectedMasterId = $(this).val();

        $('#ProjectId').select2('val', '');
        $('#ProjectId').select2('data', null);
    }
});

【问题讨论】:

  • @AniketSahrawat 已发布,在此先感谢...
  • select2 的哪个版本? (显然 v4 存在一些问题)
  • 看看Sruit A.Suk 的回答here
  • 现在没时间 - 稍后再看。
  • 试试$('#ProjectId').empty().trigger('change');

标签: javascript jquery asp.net-mvc-4 jquery-select2 select2


【解决方案1】:
$('#id').empty().trigger("change");

其中 '#id' 是您的 select2 元素的 jQuery 选择器。

【讨论】:

    【解决方案2】:

    在选择元素上把onchange="removeOthers(this)"在js代码中写这个函数:

    function removeOthers(that){
        $('option', that).not(':eq(0), :selected').remove();
        //now refresh your select2
    }
    

    【讨论】:

    • 我不是downvoter,而是为您的帮助投票+。另一方面,似乎没有显示事件描述的答案。你能更新它以获得完整的答案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2017-02-02
    相关资源
    最近更新 更多