Javascript jQuery:removeAttr(“已禁用”)不在Firefox上工作

Javascript jQuery:removeAttr(“已禁用”)不在Firefox上工作,javascript,jquery,Javascript,Jquery,我有一些代码从XHR响应返回,看起来如下所示: jQuery(':text:not(:hidden)').removeAttr("disabled"); 这是表单提交后禁用输入字段的结果。XHR响应返回jQuery的这个小消息并重新启用控件。适用于所有浏览器,甚至在FF 3.6.1 OSX上“部分”也可以。我的部分意思是,某些文本字段删除了disabled属性,而其他字段则没有。这些文本字段已验证为未隐藏。请尝试: jQuery(':text:not(:hidden)').attr("disa

我有一些代码从XHR响应返回,看起来如下所示:

jQuery(':text:not(:hidden)').removeAttr("disabled");
这是表单提交后禁用输入字段的结果。XHR响应返回jQuery的这个小消息并重新启用控件。适用于所有浏览器,甚至在FF 3.6.1 OSX上“部分”也可以。我的部分意思是,某些文本字段删除了disabled属性,而其他字段则没有。这些文本字段已验证为未隐藏。

请尝试:

jQuery(':text:not(:hidden)').attr("disabled",'');

你有没有试过这样的方法:

jQuery('input[type=text]:visible').removeAttr("disabled");

试着用这个来代替:

jQuery('input:text:visible').each(function(){
    this.disabled = false;
});

这直接使用元素的
disabled
属性,而不是与jQuery包装器混为一谈。

您应该真正使用jQuery('input:text:not(:hidden'),根据jQuery文档,这要快得多。至于你的问题,我不明白为什么原则上它不应该工作,但现在我没有FF 3.6.1来尝试它。要更改动态状态,应该使用prop()而不是attr()/removeAttr(),请参见。这似乎不是最干净的解决方案,因为在HTML5中,禁用(和其他类似)属性可以有任何值(甚至是空字符串)并且仍然有效(
都将被禁用)这只是最终禁用了我的所有文本输入控件。请继续。并不是说我没有这个问题,但是jquery帮助很多人忘记了如何编写本地javascript。最后,理智。jQuery有很多问题需要解决,尤其是jQuery用户对属性和属性之间的区别的近乎普遍的困惑。IE中有这个问题(.removeAttr(“disabled”);在FF上工作过。此“This.disabled”适用于两种浏览器:-)