2016-03-07 55 views
0

我試圖從多選下拉列表中取消選擇值時從數組中刪除值。我添加了使用push()工作的值,但在取消選擇時刪除了一些問題。Jquery從下拉列表中取消選擇時從數組中刪除值

這是我有:

$('#dropdownSelect').change(function() { 
    if ($(this).val()) { 
     $.each($(this).val(), function(index, value) { 
      if ($.inArray(value, myArray) == -1) { 
       myArray.push(value); 
      } else { 
       myArray.splice(index,1); 
      } 
     }); 
    } 
}); 

回答

2

二參數方法Array.splice()方法是有多少要刪除的項目。您有0那裏,它應該是1

@EDIT

好了,你有1套。

另一件事是,每次執行此方法時,都會刪除當前在#dropdownSelect中選擇的所有項目,並從myArray中刪除目前在myArray中的所有項目。您應該只刪除myArray中存在且不存在於$(#dropdownSelect).val()中的文件。 所以,你應該分兩步這樣做:

  1. 迭代對選定的值,並添加到myArray那些不存在那裏,

  2. 然後遍歷對myArray並刪除那些不存在的在#dropdownSelect所選值:

更新撥弄:https://jsfiddle.net/g2orqhuy/1/ 更新小提琴(除去最後一個對象):https://jsfiddle.net/g2orqhuy/2/

+0

對不起,錯字,我有1套。 – jdoyle0116

+0

無法正常工作 – jdoyle0116

+0

非常感謝。這是行得通的。唯一的問題是沒有辦法清除數組中剩餘的最後一個值。如果我選擇另一個值,它將替換索引0處的最後一個值。 – jdoyle0116

0

請試試這個。

$('#dropdownSelect').change(function() { 
     if ($(this).val()) { 
      $.each($(this).val(), function(index, value) { 
       if ($.inArray(value, myArray) == -1) { 
        myArray.push(value); 
       } else { 
        myArray.splice($.inArray(value, myArray),1); 
       } 
      }); 
     } 
    }); 
相關問題