2016-11-21 73 views
0

我有两个Select2多输入彼此相邻。一个从数组中立即获得它的选项,而另一个应该从没有可用的选项开始。镜像选择2选项不改变选择

当用户从第一个选项中选择一些选项时,我希望它们可以在第二个选项中选择,当从第一个中删除时,它也应该从第二个中删除,如果在第二个中选择也理想地删除。

到目前为止,我已经设法从第一个选择的选项到第二个,但他们的方式,我目前正在这样做意味着它在第二个自动“选择”,这是不是我想要的。我只是希望他们作为选择。

$('.secondSelect').select2({ //Start the second select working but blank 
    width: '100%' 
}); 

$('.firstSelect').select2({ //Start the first select with data 
    width: '100%', 
    data: initialData     
}).on("change", function() { //On a change to the first get the data and re-populate the second select 
    var obj = $(".firstSelect").select2("data"); 
    $(".secondSelect").select2({ 
     width: '100%', 
     data: obj      
    });  
}); 

此外,我试图消除(设置第二重新填充之前改变空)时,第一选择2被更改的选项似乎彻底清除第二选择2的选择项。不好。

希望有人仍然可以理解这一切与所有的第一和秒的飞来飞去!谢谢。

+0

试试这个:在你的改变函数结尾添加类似$('。secondSelect选项')。prop('selected',false); – phobia82

回答

0

对,想通了,有点。

来自第一个select2的数组包含selected: true这就是为什么默认情况下它们被“选中”的原因。为了解决这个问题,我只是通过数组运行并将其更改回false。删除问题仍然存在,但并不算太坏。

 $('.secondSelect').select2({ 
      width: '100%' 
     }); 

     $('.firstSelect').select2({ 
      width: '100%', 
      data: initialData     
     }).on("change", function() { 

      var obj = $(".firstSelect").select2("data");      
     for (var i in obj) { 
     if (obj[i].selected == true) { 
      obj[i].selected = false; 
     } 
     }      
      $(".secondSelect option").remove(); 
      $(".secondSelect").select2({ 
       width: '100%', 
       data: obj      
      }); 

     }); 

我确定这是一个更好的方法来做到这一点,但它现在必须做。