我有一个有很多选项的多选。什么时候每个人都在'如果选择了其他选项并且“每个人”都被选中,则会删除其他所选内容。被选中它应该删除它。
要删除其他人并保留所有人'没关系。但是我有问题要保留其他人并且只删除所有人。
目前我有类似的东西:
resetGroupSelectionWhenEverybody: function() {
$(".group_ids").on("select2:select", function (e){
if (e.params.data.text === 'everybody') {
$('#scheduled_publication_groups_ids').select2({width: '50%'}).val(group_everybody_id).trigger("change");
} else {
if ($('[title="everybody"]').length > 0) {
var idToRemove = 0;
groupIdsData = $('#scheduled_publication_groups_ids').select2('data');
groupIdsData.forEach(function(e, i) {
if (e.text === 'everybody') {
idToRemove = i;
}
});
groupIdsData.splice(idToRemove, 1);
$('#scheduled_publication_groups_ids').select2({'data': groupIdsData}).trigger("change");
}
}
});
},
使用此代码groupIdsData
就是我想要的所选元素(所有人都希望everybody
' s)。但在我改变观点之后。 select2({'data': groupIdsData})
似乎不是正确的选择。
少数事情:
idToRemove
答案 0 :(得分:0)
答案是使用select2('val')
来获取一组id,然后使用它。使用.val()
而不是完整的select2对象,代码更好。
resetGroupSelectionWhenEverybody: function() {
$(".group_ids").on("select2:select", function (e){
if (e.params.data.text === 'everybody') {
$('#scheduled_publication_groups_ids').select2({width: '50%'}).val(group_everybody_id).trigger("change");
} else {
if ($('[title="everybody"]').length > 0) {
groupIds = $('#scheduled_publication_groups_ids').select2('val');
groupToKeep = groupIds.splice( $.inArray(group_everybody_id, groupIds), 1);
$('#scheduled_publication_groups_ids').select2({width: '50%'}).val(groupToKeep).trigger("change");
}
}
});
},