.attr("禁用","禁用")问题

meo*_*meo 21 firefox jquery firebug

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

$('.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
  }
})
Run Code Online (Sandbox Code Playgroud)

removeAttr工作正常,但是当我需要添加禁用再次它根本不值一提.我的console.log被触发(并返回正确的输入字段),所以我确信我的if语句有效.但是当我在firefox中使用firebug检查DOM时,不会显示disabled属性.

有人能帮我吗?

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

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

meo*_*meo 40

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

它是一个消防BUG !!!

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

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

更新:2.2012年6月:FF11中的Firebug仍有此错误.

  • 不,你应该使用disabled ="disabled"来成为w3c.如果您阅读我的初始帖子,这正是我的代码所做的 (7认同)

Luc*_*ofi 8

更新

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

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

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

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


Pra*_*ana 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
  }
})
Run Code Online (Sandbox Code Playgroud)