在取消选中/选中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
值。 它们是非空字符串,这就是最重要的。 当你使用真实常量true
和false
,你会得到你想要的。
使用“禁用”作为属性的true
值的常见做法是一种愚蠢的迷信,事实上没有根据。 当然,它确实有效,因为“disabled”也是一个非空字符串,所以它是true
。 如果需要,可以使用null
作为false
值,或者使用数字零。
编辑 – 根据有用的注释修复if
语句。 所有必要的是检查属性的真实性。
disabled
属性应具有以下值: disabled
或空字符串而不是true
和false
。
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/ )