如何在其他选择下拉列表中隐藏特定的选定选项

时间:2016-12-31 16:12:10

标签: jquery angularjs

我有两个具有相同选项的选择下拉菜单。第一个下拉默认选择选项应为"公共地址"第二个下拉默认选择选项应为"添加地址"。

我应该允许输入" Public Address / Worker Address"只有一次。所以我需要隐藏" Public Address"第二次下拉页面加载时的选项。并允许用户选择""公共地址/工人地址"从下拉列表中只选择一次。

在此处分享Plunker链接:http://plnkr.co/edit/9G7BCyK37CNf6RWjU9Cz?p=preview

Please refer Plunker link

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我建议您依靠Angular执行此操作而忘记直接使用jQuery,因为它不是必需的。

您可以做的是拥有所有选项的主列表,并为选择维护两个单独的列表。选择更改后,您将重建列表。这里的示例不是基于您的plunker中的代码,而是基于PoC。您应该注意的是,一个选择列表中的选定选项不能成为另一个选项中的选项。



angular.module('app', [])
  .controller('controller', function() {
    var self = this;
    self.mainList = [{
      name: 'Public'
    }, {
      name: 'Private'
    }, {
      name: 'Protected'
    }, {
      name: 'Super'
    }, {
      name: 'Awesome'
    }, ];
    self.lists = [
      [],
      []
    ];
    self.selections = [self.mainList[0], self.mainList[1]];
    self.buildList = function(which, other) {
      self.lists[which] = [];
      self.mainList.forEach(function(e) {
        if (e.name !== self.selections[other].name) {
          self.lists[which].push(e);
        }
      });
    };
    self.buildLists = function() {
      self.buildList(0, 1);
      self.buildList(1, 0);
    };
  });

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="controller as c" ng-init="c.buildLists()">
  <label>First</label>
  <select ng-model="c.selections[0]" ng-change="c.buildLists()" 
          ng-options="o.name for o in c.lists[0]">
  </select>
  <label>Second</label>
  <select ng-model="c.selections[1]" ng-change="c.buildLists()" 
          ng-options="o.name for o in c.lists[1]">
  </select>
</div>
&#13;
&#13;
&#13;