jQuery MultiSelect无法启用禁用

时间:2017-09-12 07:23:38

标签: javascript jquery multi-select

我有几个下拉列表,其中只有一个从一开始就启用,其他所有都被禁用         <select class="someClass" name="someName" multiple id="someId" disabled>

禁用下拉菜单的启用取决于第一个(启用)下拉列表中值的选择,因此我使用以下代码

$('#enabledDropDown').on('change',function() { }

在那里(在另一个if语句中)我尝试了所有可能的组合:

$('#someId').multiselect('enable');
$('#someId').multiselect('refresh');
$('#someId option').attr('disabled',false);
$('#someId').prop('disabled', false);
$('#someId').material_select();
$('#someId').removeAttr('disabled');

但它不起作用。下拉列表仍然被禁用!

修改 我有$(document).ready(function () { } 它做了以下......

$('#someId').multiselect({
    name : 'someName',
    columns : someNumber,
    placeholder : 'somePlaceholder'

 });

这似乎是我的问题的原因,因为如果我删除document.ready函数中的相应代码块,则下拉列表会按预期运行。 问题是我需要document.ready函数。

我真的不明白为什么这会交互,因为document.ready只在侧面加载时执行一次。但是在那之后就会发生这种情况。

3 个答案:

答案 0 :(得分:0)

再次检查您的情况。 prop('disable',false)应该有效,请查看下面的代码段以供参考。

&#13;
&#13;
$(document).ready(function() {
    $("#checkMe").click(function() {
       if ($(this).is(":checked")) { 
          $("#dropdown").prop("disabled", true);
       } else {
          $("#dropdown").prop("disabled", false);  
       }
    });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="dropdown" style="width:200px;">
              <option value="feedback">Options</option>
              <option value="feedback">Options</option>
              </select>

              <input type="checkbox" id="checkMe" value="feedback"/>Check me!
&#13;
&#13;
&#13;

答案 1 :(得分:0)

你可以尝试

document.getElementById("someId").disabled=false;

并在第一个下拉列表中添加onclick函数并检查其值,然后启用/禁用下拉列表。

&#13;
&#13;
function check(){
  if(document.getElementById('enabledDropDown').value == 'someId')
    document.getElementById('someId').disabled=false;
  else
    document.getElementById('someId').disabled=true;
}
&#13;
<!DOCTYPE html>
    <html>
    <head>
    </head>
    <body>

    <form>
    <text>Select someId to enable dropdown</text><br>
    
    <select class="someClass" name="someName" id="enabledDropDown" onchange="check()">
      <option>Banana</option>
      <option>Orange</option>
      <option>someId</option>
      <option>Pear</option>
      <option>Banana</option>
      <option>Orange</option>
    </select>

    <select class="someClass" name="someName" id="someId" disabled>
      <option>Apple</option>
      <option>Pear</option>
      <option>Banana</option>
      <option>Orange</option>
    </select>
    
    
    <br><br>

    </body>
    </html>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你必须使用$(&#34; .someClass&#34;)。prop(&#34; disabled&#34;,false);这是工作。例如:

{
  "timestamp": 1505204641753,
  "status": 500,
  "error": "Internal Server Error",
  "exception": "java.lang.IllegalArgumentException",
  "message": "Session must not be null",
  "path": "/getUser/10/pl"
}