我可能在这里遗漏了一些明显的东西。我对选择完全是新手,因此我承担了我的无知。 我正在使用选择与Asp.NET MVC的选择倍数。当用户手动选择值时,它工作正常。 但是,当我使用Ajax调用来预先选择一些值(已经存在于我使用Chosen的选项列表中)时,不会发布选定的值。
这是我的代码看起来像
$.ajax({ type: "POST",
url: "/Project/GetProjectCrewMemberIds",
traditional: true,
//dataType:'json',
data: { projectId: selectedProject },
success: function (data) {
$('ul.chosen-choices').empty();
$.each(data, function (index, item) {
$('ul.chosen-choices').append('<li class="search-choice"><span>' + item.text + '</span><a class="search-choice-close" data-option-array-index="' + item.value + '"></a></li>');
});
// $("#SelectedCrewMembersId").trigger("chosen:updated");
},
error: function (xhr, status, exp) {
alert(exp);
}
});
Ajax调用有效,我得到了所需的值。
当我使用触发器时(“选择:更新”);选择列表变空。评论时,我将值添加到列表中但未发布。
有人可以告诉我这里缺少的东西。
由于
答案 0 :(得分:1)
最终我找到了解决方案,所以希望这有助于其他人:
$.ajax({
type: "POST",
url: "/Project/GetProjectCrewMemberIds",
traditional: true,
//dataType:'json',
data: { projectId: selectedProject },
success: function (data) {
// $('ul.chosen-choices').empty();
$.each(data, function (index, item) {
$("#SelectedCrewMembersId option[value='" + item.value + "']").prop("selected", true);
});
$("#SelectedCrewMembersId").trigger("chosen:updated");
},
error: function (xhr, status, exp) {
alert(exp);
}
});
只是更新''中的选定值并调用.trigger(“selected:updated”)
因此,不要更新所选的“ul.chosen-choices”元素,只需选择所需的元素并调用.trigger(“selected:updated”);将照顾其余部分。