2011-03-23 41 views
1

我想启用/魔鬼输入文本时,chekbox被选中/取消尝试启用/禁用输入文本时,chekbox未选中/检查

我在下面试过,但它不工作..

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


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

    }); 

任何帮助吗?

问候

哈维

回答

3

你在这两种情况下的 “禁用” 属性设置为true。试试这个:

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

或者更简单地说:你用

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

的字符串— “真” 与 “假” —都true值的JavaScript。它们是非空字符串,这就是最重要的。当你使用实常数truefalse时,你会得到你想要的。

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

编辑 —根据有用的评论修正了if声明。所有必要的是检查属性的真实性。

+0

谢谢,它的工作原理,但如果我用这条线,而不是($('#name')。attr('disabled')== true) – ziiweb 2011-03-23 14:20:52

+0

@ user248959 oops你是对的......我会修理它!! – Pointy 2011-03-23 14:24:12

0

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

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

这是不正确的。重要的是价值的真实性。 – Pointy 2011-03-23 14:15:51

0

试试这个:

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

检查属性存在,并删除它,否则添加属性

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/

相关问题