在取消选中/选中chekbox时尝试启用/禁用输入文本

我正在尝试在选中/取消选中chekbox时启用/禁用输入文本

我在下面尝试了这个,但它不起作用..

$('#checkbox').change(function(){ if($('#name').attr('disabled') == 'true') $('#name').attr('disabled', 'false'); else $('#name').attr('disabled', 'true'); }); 

有帮助吗?

问候

哈维

在这两种情况下,您都将“禁用”属性设置为true 。 试试这个:

 if($('#name').attr('disabled')) $('#name').attr('disabled', false); else $('#name').attr('disabled', true); 

或者,更简单地说:

  $('#name').attr('disabled', !$('#name').attr('disabled')); 

您使用的字符串 – “true”和“false” – 都是JavaScript的true值。 它们是非空字符串,这就是最重要的。 当你使用真实常量truefalse ,你会得到你想要的。

使用“禁用”作为属性的true值的常见做法是一种愚蠢的迷信,事实上没有根据。 当然,它确实有效,因为“disabled”也是一个非空字符串,所以它是true 。 如果需要,可以使用null作为false值,或者使用数字零。

编辑 – 根据有用的注释修复if语句。 所有必要的是检查属性的真实性。

disabled属性应具有以下值: disabled或空字符串而不是truefalse

 if($('#name').attr('disabled') == 'disabled') $('#name').attr('disabled', ''); else $('#name').attr('disabled', 'disabled'); 

试试这个 :

 if($('#name').attr('disabled')) $('#name').removeAttr("disabled"); else $('#name').attr("disabled", true); 

检查属性是否存在并将其删除,否则添加属性

 $('#checkbox').change(function() { if ($('#checkbox').is(':checked')) { $('#name').removeAttr('disabled'); } else { $('#name').attr('disabled', 'disabled'); } }); 

从jquery 1.6.1 – >而不是使用:

 $("#checkbox").change(function(){ if($("#checkbox").checked) $("#name").prop("disabled", false); else $("#name").prop("disabled", true); }); 

即使用prop而不是attr( http://api.jquery.com/prop/