清除 Select2 的所有列表项而不是选中的
Posted
技术标签:
【中文标题】清除 Select2 的所有列表项而不是选中的【英文标题】:Clear all of the list items of Select2 rather than the selected 【发布时间】: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');
【参考方案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,而是为您的帮助投票+。另一方面,似乎没有显示事件描述的答案。你能更新它以获得完整的答案吗?以上是关于清除 Select2 的所有列表项而不是选中的的主要内容,如果未能解决你的问题,请参考以下文章
从 JSON 数组拼接或删除元素列表,仅删除偶数项而不是匹配项