【问题标题】:how to disable multiselect on change or on select event?如何在更改或选择事件上禁用多选?
【发布时间】:2015-05-02 17:39:20
【问题描述】:

当我选择第 10 个值时,此组合框包含一些 x 值,我需要禁用多选选项,第 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]
                        });
        }
        }
        }
        });

【问题讨论】:

    标签: javascript jquery html arrays


    【解决方案1】:

    这是一个实用的解决方案:

    $('#inc_combo_ems_hour').change(function(){
    
      if ( $('#inc_combo_ems_hour option:selected').val() == 10 ) {
    
        $(this).removeAttr('multiple');
    
      } else {
    
        $(this).attr('multiple', 'multiple');
    
      }
    
    });
    <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>

    或者看这个alternate demo here

    【讨论】:

    • 我需要多选而不是第 10 个值
    【解决方案2】:

    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');
        }
    });
    

    【讨论】:

      【解决方案3】:

      如果您想在选项为 10 时删除多选:

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

      【讨论】:

        【解决方案4】:

        试试这个,对你有帮助。

        $('#sle').change(function(){
          $(this).removeAttr('multiple');
        });
        <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> 

        【讨论】:

          猜你喜欢
          • 2021-08-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-20
          相关资源
          最近更新 更多