簡體   English   中英

從select2中的選定元素中刪除一項

[英]Remove one item from selected elements in 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) {
          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的小組)。 但是在我堅持要改變觀點之后。 select2({'data': groupIdsData})似乎不是正確的選擇。

一些事情 :

  1. 我認為我沒有正確設置idToRemove
  2. 更新select2 multiselect值的最佳方法是什么? 看來可能是哈希

答案是使用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");
        }
      }
    });
  },

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM