C# 使用多选列表框时不显示附加项
当不包含第二个脚本时,附加的项可以完美地工作,这使列表框看起来很光滑,并且带有复选框——但是当我包含它时,它就不会附加项 有什么原因吗 JQuery:C# 使用多选列表框时不显示附加项,c#,jquery,listbox,C#,Jquery,Listbox,当不包含第二个脚本时,附加的项可以完美地工作,这使列表框看起来很光滑,并且带有复选框——但是当我包含它时,它就不会附加项 有什么原因吗 JQuery: $("#ddlistcategory").change(function () { var catItem = $("#ddlistcategory").val(); $("#ddlistaccountitems").empty(); $.ajax({ url: '
$("#ddlistcategory").change(function () {
var catItem = $("#ddlistcategory").val();
$("#ddlistaccountitems").empty();
$.ajax({
url: '@Url.Action("GetCategories", "Account")',
dataType: "json",
type: "Post",
data: { "i": catItem },
success: function (data) {
$.each(data, function (key, val) {
//alert(key + " " + val);
$("#ddlistaccountitems").append('<option id="' + key + '">' + val + '</option>');
})
}
});
});
$('#ddlistaccountitems').multiselect({
includeSelectAllOption: false,
allSelectedText: 'No option left ...',
enableFiltering: true,
filterPlaceholder: 'Search for something...'
});
视图:
您在ajax方法之外调用multiselect,该方法使用选项填充元素。因此,您将在ajax完成之前对其进行初始化,因此问题很可能是初始化还没有从中构建的选项
要解决此问题,请将初始化移到success方法中,这样它将在ajax完成并创建它所需的所有数据后执行。您的ajax调用将异步工作。也就是说,.multiselect将在附加选项之前执行。multiselect将隐藏您的实际选择,并将其替换为自定义html。所以你必须先填好它。多选执行。加
async: false
在Ajax中调用或调用
$'ddlistaccountitems'。多选
在成功的功能中 您应该避免async:false。它与范式背道而驰,在jQuery3.XYes中也被删除了。。这不是一个最优的解决方案。最好将multiselect移到success函数。
async: false