如何在更改或选择事件上禁用多选?

时间:2015-03-02 11:25:22

标签: javascript jquery html arrays

这个组合框包含一些x值当我选择第10个值时我需要禁用多个选择选项,除了第10个值意味着此选项应该是多个选择

 <select class="easyui-combobox" multiple="multiple" multiline="true"  style="width: 150px;height:50px;" id="inc_combo_ems_hour" style="width: 75px;">
                        <option value="00">00</option>
                        <option value="01">01</option>
                        <option value="02">02</option>
                        <option value="03">03</option>
                        <option value="04">04</option>
                        <option value="10">10</option></select>    


    $('#inc_combo_ems_hour').combobox({
            onSelect: function(){
                var val=[];
        val=$('#inc_combo_ems_hour').combobox('getValues');

        for(i=0;i<10;i++)
        {
        if(val[i]!="null"){
        if(val[i]=="*")
        {
        $('#inc_combo_ems_hour').combobox({
                        required: false,
                        novalidate: false,
                multiple: false,
                value:"*"
                        });
        }
        }
        else if(val[i]!=null && val[i] !="*"){
        $('#inc_combo_ems_hour').combobox('setValue',val[i])
        $('#inc_combo_ems_hour').combobox({
                        required: true,
                        novalidate: false,
                multiple: true,
                value:val[i]
                        });
        }
        }
        }
        });

4 个答案:

答案 0 :(得分:2)

这是一个功能性解决方案:

&#13;
&#13;
$('#inc_combo_ems_hour').change(function(){

  if ( $('#inc_combo_ems_hour option:selected').val() == 10 ) {

    $(this).removeAttr('multiple');

  } else {

    $(this).attr('multiple', 'multiple');

  }

});
&#13;
<script type="text/javascript" src="//code.jquery.com/jquery-1.9.1.js"></script>

<select class="easyui-combobox" multiple="multiple" multiline="true"  style="width: 150px;height:50px;" id="inc_combo_ems_hour" style="width: 75px;">
  <option value="00">00</option>
  <option value="01">01</option>
  <option value="02">02</option>
  <option value="03">03</option>
  <option value="04">04</option>
  <option value="10">10</option>
</select>
&#13;
&#13;
&#13;

或者看到这个alternate demo here

答案 1 :(得分:0)

试试这个,这对你有帮助。

&#13;
&#13;
$('#sle').change(function(){
  $(this).removeAttr('multiple');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
 <select id="sle" class="easyui-combobox" multiple="multiple" >
   <option value="00">00</option>
   <option value="01">01</option>
   <option value="02">02</option>
   <option value="03">03</option>
   <option value="04">04</option>
   <option value="10">10</option>
</select> 
&#13;
&#13;
&#13;

答案 2 :(得分:0)

如果要在选项为10时删除多个选择:

$('#sle').change(function(){
  if ( $(this).val() == 10 ) {
      $(this).removeAttr('multiple');
  } else {
      $(this).attr('multiple', 'multiple');
  }
});

答案 3 :(得分:0)

jQuery 1.6以后, 始终使用selectedIndex,因为选项值可能会更改。

$('#inc_combo_ems_hour').change(function() {
    var $this = $(this);
    if ( $this.prop("selectedIndex") === 9 ) {
        $this.removeAttr('multiple');
    } else {
        $this.attr('multiple', 'multiple');
    }
});