.attr(“禁用”,“禁用”)问题

时间:2010-06-09 10:17:33

标签: jquery firefox firebug

我有这个功能从输入字段切换disabled属性:

$('.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时,不会显示disabled属性。

有人可以帮助我吗?

PS:请不要专注于函数或if语句本身,只是那个不能用于禁用的attr工作正常...

编辑:它的输入类型=“隐藏”是否可能禁用对隐藏字段不起作用?

7 个答案:

答案 0 :(得分:41)

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

它是一个消防BUG !!!

我的代码有效。我已经要求PHP Dev将隐藏的输入类型更改为输入类型文本。 禁用功能有效。但是firebug控制台没有更新这个状态!

你可以在这里自己测试这个firebug bug http://jsbin.com/uneti3/3#。对于示例页面,请访问aSeptik。

更新:2。2012年6月:FF11中的Firebug仍有此错误。

答案 1 :(得分:8)

<强>已更新

DEMO:http://jsbin.com/uneti3/3

你的代码错了,它应该是这样的:

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

你正在以错误的方式使用toggleClass函数

     

答案 2 :(得分:7)

试试这个更新的代码:

$(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
  }
})

答案 3 :(得分:2)

我在切换按钮的禁用状态时遇到了类似的问题!解雇后removeProp('disabled')按钮拒绝再次“禁用”!我找到了一个有趣的解决方案:使用prop("disabled",true)禁用按钮,prop("disabled",false)重新启用它! 现在,我能够多次切换按钮的“禁用”状态!尝试一下。

答案 4 :(得分:-1)

$("#vp_code").textinput("enable");
$("#vp_code").textinput("disable");

你可以尝试一下

答案 5 :(得分:-2)

尝试

$(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
  }
});

答案 6 :(得分:-2)

添加已禁用的属性

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

删除已禁用的属性

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