我有2个bootstrap-multiselect框。我想根据通过Ajax调用在另一个中做出的选择来刷新一个项目。
除了多重选择用来取消选项之外,所有工作都没有用“重建”或“刷新”填充。
代码:
去除多重选择“
$('#Groups').multiselect({
onChange: function (option, checked) {
//get all of the selected tiems
var values = $('#Groups option:selected');
var selected = "";
$(values).each(function (index, value) {
selected += $(value).prop('value') + ",";
});
selected = selected.substring(0, selected.length - 1);
//update hidden field with comma delimited string for state persistance
$("#Hidden_Groups").val(selected);
},
includeSelectAllOption: true
});
更新选项列表:
$('#JobCodes').multiselect({
onDropdownHide: function(event) {
console.log("start");
var option = $("#Groups");
//clear out old consolidations
option.empty();
console.log("emptied");
////get consolidation and append to select options list
$.getJSON("/Reports/GetGroups/", { options: $("#Hidden_JobCodes").val() }, function (result) {
$.each(result, function (index, item) {
console.log(item.text);
option.append($("<option />").val(item.id).text(item.text));
});
});
option.multiselect('destroy');
option.multiselect('rebuild');
option.multiselect('refresh');
},
离开了破坏,重建和刷新就像我尝试过的一样。已经在每个订单和组合中使用了所有这些并且没有运气。
Destroy会将我的multiselect“更改”回标准选择,但无论我做什么,之后我都无法使用新的选项列表返回多选项,包括使用onchange事件存在的完整多选调用。它要么空了又有旧列表。当我进行刷新/重建调用时,选择列表具有正确的选项。
提前致谢。 Ť
答案 0 :(得分:0)
完全是我的错!!
对/ destroy / refresh / rebuild的调用超出了ajax调用。所以在我的新列表被返回之前执行,因此当时没有要重建的列表。
解决方案:
////get consolidation and append to select options list
$.getJSON("/Reports/GetGroups/", { options: $("#Hidden_JobCodes").val() }, function (result) {
$.each(result, function (index, item) {
console.log(item.text);
option.append($("<option />").val(item.id).text(item.text));
});
option.multiselect('rebuild')
});