1

我正在使用来自http://ivaynberg.github.io/select2/select2.js的插件用于具有多项选择的员工列表下拉列表。

<select id="empList" name="empList" multiple="multiple">
<option value="ALL">ALL</option>
<option value="1">emp 1</option>
<option value="2">emp 2</option>
<option value="3">emp 3</option>

我的要求是,当用户选择“全部”时,那么单个员工就无法选举。如果用户选择任何员工,则不能选择“ALL”。

谢谢,

4

3 回答 3

0

我为您找到了解决方案...将其保留在您的脚本中..,

$('#empList').click(function(){
   var Value = $(this).val();
   $("#empList option").each(function(){
      var Opt = $(this).val();
      if(Value == 'ALL'){
          if(Opt != Value){
              $("option[value="+Opt+"]").prop('disabled', true);
          } else {
              $("option[value="+Opt+"]").prop('disabled', false);
          }
      } else {
          if(Value == null) {
              $("option[value="+Opt+"]").prop('disabled', false);
          } else {
              $("option[value='ALL']").prop('disabled', true);
          }
      }
    });
});
于 2013-04-08T13:36:37.650 回答
0

我相信你正在寻找这样的东西:http: //jsfiddle.net/jaTPc/

这是修改后的 html(添加的类):

<select id="empList" name="empList" multiple="multiple">
<option value="ALL" class="all">ALL</option>
<option value="1" class="notall">emp 1</option>
<option value="2" class="notall">emp 2</option>
<option value="3" class="notall">emp 3</option>
</select>

和 jQuery

$("#empList").change(function() {
var optionAll = $(".all");
var optionOther = $(".notall");

this.value == "ALL" ?  optionOther.prop("disabled", true) : optionAll.prop("disabled", true);
});
于 2013-04-08T13:46:19.530 回答
0

我没有测试这段代码,但它应该是这样的:

$('#empList').change(function () {
    var self = $(this);
    if (self.val() == undefined) { // Selected all option
       $.each(self.find('option'), function (res) {
           if (res.attr('value') != undefined) {
              res.prop('disabled', true);
           }
       })
    }
    else {
       $.each(self.find('option'), function (res) {
           if (res.attr('value') != undefined) {
              res.prop('disabled', false);
           }
       })
    }
})

希望它会有所帮助。

于 2013-04-08T10:51:03.850 回答