3

我有如下打印的输入复选框。

<input type="checkbox" id="a1" value="11" disabled="false">
<input type="checkbox" id="a2" value="21" disabled="true">
<input type="checkbox" id="a3" value="31" disabled="false">

我知道 disabled 属性没有任何价值。因此,当属性存在时,无论分配给它的值如何,元素都会被禁用。我想从值为 false 的所有输入元素中删除所有禁用的属性。

使用 jQuery 我想使用如下代码。

$("*[disabled]").not(true).removeAttr("disabled");
4

5 回答 5

3

为什么不只匹配 where disabledis 的元素false

$('[disabled="false"]​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​')​.removeAttr('disabled');​​​

演示:http: //jsfiddle.net/ASN29/

无论属性的值如何,属性的存在disabled都会自动使元素禁用,因此这不是一个好主意。HTML是如何变成这样的?

于 2012-12-21T00:04:56.027 回答
2

您可以简单地使用这样的选择器:

$('input[disabled="false"]').removeAttr("disabled");

jsFiddle 演示

*我补充说,它不是input,而是大大缩小了查询范围。这将搜索具有称为具有值input的属性的元素。disabledfalse

我建议你根本不要这样做。该 HTML 不应该被生成。

于 2012-12-21T00:04:58.123 回答
2

如果要启用它们,请使用.prop().. (这是因为disabled作为checkbox输入的实际属性)

$('input[disabled="false"]').prop('disabled', false);

演示在http://jsfiddle.net/gaby/Bn4dr/


但是,正确的方法是直接打印正确的html

<input type="checkbox" id="a1" value="11">
<input type="checkbox" id="a2" value="21" disabled>
<input type="checkbox" id="a3" value="31">
于 2012-12-21T00:11:41.237 回答
0
​$(document).ready(function (){
    $('input:disabled').removeAttr('disabled');    
});​

这是它的 jsFiddle和关于:disabled 选择器的文档

于 2012-12-21T00:04:42.100 回答
0
$('input[disabled="false"]').removeAttr("disabled");

http://jsfiddle.net/JKs4C/

至于这是否是一个好主意,另一方面......我认为真正的答案是修复您的服务器端渲染,以完全忽略未禁用元素的禁用属性。否则,如果您的脚本出错、noscript 等,您最终会禁用所有元素。

于 2012-12-21T00:07:45.407 回答