我正在尝试在选中/取消选中复选框时启用/禁用输入文本
我在下面尝试了这个,但它不起作用..
$('#checkbox').change(function(){
if($('#name').attr('disabled') == 'true')
$('#name').attr('disabled', 'false');
else
$('#name').attr('disabled', 'true');
});
任何帮助?
此致
哈维
答案 0 :(得分:4)
在这两种情况下,您都将“已禁用”属性设置为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
语句。所有必要的是检查属性的真实性。
答案 1 :(得分:0)
disabled
属性应具有以下值:disabled
或空字符串,而不是true
和false
。
if($('#name').attr('disabled') == 'disabled')
$('#name').attr('disabled', '');
else
$('#name').attr('disabled', 'disabled');
答案 2 :(得分:0)
试试这个:
if($('#name').attr('disabled'))
$('#name').removeAttr("disabled");
else
$('#name').attr("disabled", true);
检查属性是否存在并将其删除,否则添加属性
答案 3 :(得分:0)
$('#checkbox').change(function() {
if ($('#checkbox').is(':checked')) {
$('#name').removeAttr('disabled');
} else {
$('#name').attr('disabled', 'disabled');
}
});
答案 4 :(得分:0)
来自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/)