jquery attr无法禁用下拉列表

时间:2014-10-30 05:46:49

标签: jquery

这是我目前的脚本。 else if无效。

$('#groupbyCheckbox').change(function() {
  if ($( "#groupbyDropdown" ).prop( "disabled", true )) {
    $("#groupbyDropdown").attr('disabled','');
    alert('true');
  }
  else if ($( "#groupbyDropdown" ).prop( "disabled", false )) {
    alert();
    $("#groupbyDropdown").attr('disabled','disabled');
    alert('false');
  }
});

additional question.

$('#newCheckBox').change(function(){
        $("#dropDown").empty();
        var items = [];
        $.each(var1, function(key, data) {
            items.push('<option value='+key+'>'+varlist+'</option>');
        });
        $("#dropDown").append(items.join(''));
    });

3 个答案:

答案 0 :(得分:1)

我认为您要做的是根据是否选中复选框启用/禁用选择

&#13;
&#13;
jQuery(function($) {
  $('#groupbyCheckbox').change(function() {
    $("#groupbyDropdown").prop('disabled', this.checked);
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" id="groupbyCheckbox" />
<select id="groupbyDropdown">
  <option>1</option>
  <option>2</option>
  <option>3</option>
</select>
&#13;
&#13;
&#13;


在您的代码中存在多个问题,

  • if条件下,您正在使用.prop()的setter版本,它将始终返回一个jquery对象,因此将始终是真实的
  • 也不应该使用.attr()来设置像disabled这样的属性,你需要使用.prop()

答案 1 :(得分:0)

在这两种情况下,您都要设置值而不是获取它。看这里: <击>

<击>
if ($( "#groupbyDropdown" ).prop( "disabled", true )) {

<击> 实际设置属性。你想要的是检查它的当前值:

if ($( "#groupbyDropdown" ).prop( "disabled" ) == true) {

或简单地说:

if ($( "#groupbyDropdown" ).prop( "disabled" )) {

同样的原则适用于else if: <击>

<击>
else if ($( "#groupbyDropdown" ).prop( "disabled", false )) {

<击> 应该是:

else if ($( "#groupbyDropdown" ).prop( "disabled" ) == false) {

或简单地说:

else if (!$( "#groupbyDropdown" ).prop( "disabled" )) {

这就是为什么它永远不会进入else-block - 你总是事先将它设置为true(并且ifelse if中的整个条件无论如何都会评估为真,所以没有真正的检查发生)。

在此处查看一个简单示例(切换复选框已禁用状态):http://jsfiddle.net/Lohervar/

答案 2 :(得分:0)

$('#groupbyCheckbox').change(function() {
   var isDisable= $("#groupbyDropdown" ).prop("disabled");
   $("#groupbyDropdown" ).prop( "disabled",!isDisable);
});

注意:设置禁用属性$(&#34; #groupbyDropdown&#34;)。prop(&#34;禁用&#34;,true),不返回Boolean,它总是返回{{ 1}}

使用object