清除Select2的所有列表项而不是选中的列表项

时间:2016-11-14 07:18:27

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

我有一个级联的Select2 ddl,当我选择master 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);
    }
});

2 个答案:

答案 0 :(得分:1)

在select元素中将onchange="removeOthers(this)"放在js代码中写下这个函数:

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

答案 1 :(得分:0)

$('#id').empty().trigger("change");

“#id”是select2元素的jQuery选择器。