代码之家  ›  专栏  ›  技术社区  ›  meo

.attr(“disabled”,“disabled”)问题

  •  22
  • meo  · 技术社区  · 14 年前

    我有这个函数可以切换输入字段中禁用的属性:

    $('.someElement').click(function(){     
      if (someCondition) {
         console.log($target.prev('input')) // gives out the right object
         $target.toggleClass('open').prev('input').attr('disabled', 'disabled');
      }else{
         $target.toggleClass('open').prev('input').removeAttr('disabled'); //this works
      }
    })
    

    这个 removeAttr 很好,但是当我需要再次添加残疾人时,它什么也不做。我的console.log被触发(并返回正确的输入字段),所以我确信我的if语句可以工作。但是当我在firefox中使用firebug检查DOM时,禁用的属性不会出现。

    有人能帮我吗?

    PS:请不要把注意力集中在函数或if语句本身上,它可以很好地工作,只是attr不适用于disabled…

    编辑 :它的输入类型为“hidden”是否可能禁用不适用于隐藏字段?

    7 回复  |  直到 7 年前
        1
  •  41
  •   Maxime    9 年前

    感谢大家的贡献!我发现了问题:

    这是一只萤火虫!!!!

    我的代码工作。我已经要求PHP开发人员将隐藏在中的输入类型更改为输入类型文本。 禁用的功能工作。但Firebug控制台不更新此状态!

    你可以自己在这里测试这个萤火虫。 http://jsbin.com/uneti3/3# . 示例页的thx到aseptik。

    更新:2。2012年6月:FF11的Firebug仍然有这个bug。

        2
  •  8
  •   Luca Filosofi    7 年前

    更新的

    演示: http://jsbin.com/uneti3/3

    您的代码错误,应该是这样的:

     $(bla).click(function() { 
            var disable =  $target.toggleClass('open').hasClass('open');
           $target.prev().prop("disabled", disable);
      });
    

    您使用toggleClass函数的方式不正确

        3
  •  7
  •   Pranay Rana    14 年前

    尝试此更新的代码:

    $(bla).click(function(){        
      if (something) {
         console.log($target.prev("input")) // gives out the right object
         $target.toggleClass("open").prev("input").attr("disabled", "true");
      }else{
         $target.toggleClass("open").prev("input").removeAttr("disabled"); //this works
      }
    })
    
        4
  •  2
  •   sschrass Maverick    11 年前

    在切换按钮的禁用状态时,我遇到了类似的问题!在开火后 removeProp('disabled') 按钮拒绝再次“禁用”!我发现了一个有趣的解决方案:使用 prop("disabled",true) 禁用按钮和 prop("disabled",false) 重新启用它! 现在我可以根据需要多次切换按钮的“禁用”状态!试试看。

        5
  •  -1
  •   sinda    7 年前
    $("#vp_code").textinput("enable");
    $("#vp_code").textinput("disable");
    

    你可以试试

        6
  •  -2
  •   Dennis C    14 年前

    尝试

    $(bla).click(function(){        
      if (something) {
         console.log("A:"+$target.prev("input")) // gives out the right object
         $target.toggleClass("open").prev("input").attr("disabled", "disabled");
      }else{
         console.log("A:"+$target.prev("input")) // any thing from there for a single click?
         $target.toggleClass("open").prev("input").removeAttr("disabled"); //this works
      }
    });
    
        7
  •  -2
  •   Dipendra Ghatal    7 年前

    添加禁用的属性

    $('#id').attr("disabled", "true");
    

    删除禁用的属性

    $('#id').removeAttr('disabled');