2016-03-07 82 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); 
       } 
      }); 
     } 
    }); 
相关问题