我有一个级联的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);
}
});
答案 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选择器。