Jquery从多个select中删除/追加项目到多个select

时间:2010-10-20 09:00:28

标签: jquery multiple-select appendto

我有3个多选。在第一个Select1(左)中,我加载了一组模块。在第3个Select3(右)中,我加载了另一组模块。用户可以从左侧选择并点击添加以从左侧删除项目并将其附加到Select2(中间)。用户可以使用右侧相同的选项,选择不同的添加项,其中选项将附加到中间并从右侧删除。

一切正常。

我想让用户从中间多选中删除。我只想要删除一次。如果用户选择正式包含在左和右多选中的项目,我希望它们从中间移除并根据原始来自的位置附加到左和右。 我有一个变量设置来确定中间最初选择的模块的来源。

我遇到了从中间到左/右多个选择的实际追加/删除ITEM的问题。我用谷歌搜索并尝试了各种各样的东西,但它花了太长时间。

以下脚本仅显示与Left和Middle选择的交互。我将使用任何解决方案作为中间,正确关系的模型。

非常感谢任何帮助

<script src="js/jquery.js" type="text/javascript"></script>  
<script type="text/javascript">  
 $().ready(function() {  
  $('#add_mod').click(function() {  
   return !$('#select1_mod   option:selected').remove().appendTo('#select2_mod');
  });  
  $('#remove_mod').click(function() {  
   var x = "<%= str(modules) %>";  
   $("#select2_mod option:selected").each(function (i,selected) {  
    var thismod = $(this).text();  
    if (x.match(thismod))   
     // HELP Here I want to append this item (text and value) to Select1  
     // HELP Plus, remove this item from Select 2
                           //else after I get a solution for Left/Middle   
   });  
                    // HELP And then return Select1, Select2, Select3  
  });  
 });  
</script>  

1 个答案:

答案 0 :(得分:1)

像往常一样,答案最终非常简单。

<script type="text/javascript">  
        $().ready(function() {  
        $('#add_mod').click(function() {  
            return !$('#select1_mod   option:selected').remove().appendTo('#select2_mod');  
        });  
        $('#remove_mod').click(function() {  
            var x = "<%= str(modules) %>";  
            var thisind = 0;  
            $("#select2_mod option:selected").each(function (index) {  
                var thismod = $(this).text();  
                var thisval = $(this).val();  
                if (x.match(thismod)) {  
                    $(this).remove().appendTo('#select1_mod');}  
                else {  
                    $(this).remove().appendTo('#select1_ms');}                      
            });  
        });  
        $('#add_ms').click(function() {  
            return !$('#select1_ms   option:selected').remove().appendTo('#select2_mod');  
        });  
        $('#remove_ms').click(function() {  
            return !$('#select2_ms   option:selected').remove().appendTo('#select1_ms');  
        });  

    });  
</script>