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

时间:2011-03-23 14:10:26

标签: jquery

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

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

  $('#checkbox').change(function(){


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

  });

任何帮助?

此致

哈维

5 个答案:

答案 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值。它们是非空字符串,这就是最重要的。当您使用实常数truefalse时,您就会得到您想要的结果。

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

编辑 - 根据有用的评论修复了if语句。所有必要的是检查属性的真实性。

答案 1 :(得分:0)

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

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/