2013-02-26 59 views
0

我已经彻底查找了一个答案,但似乎只是给了我一半所需的东西,这是我如何设法实现的。我想要做的是在复选框被选中时启用下拉菜单,否则保持禁用。我真的不知道如何调用标签中的函数,但是我再也不确定它是否工作。勾选复选框时启用下拉菜单

function .onCheckChange() { 
    if ($("#partoption2").is(':checked')) { 
     $("#parttwoqty").attr('disabled', 'disabled'); 
     $("#partoption2").val("TRUE"); 
    } else { 
     $("#parttwoqty").attr('disabled'); 
     $("#partoption2").val("FALSE"); 
    } 
} 

这是小提琴:http://jsfiddle.net/xjn3Q/1/

谢谢!

+0

我还没有检查过你的小提琴,但函数名应该是'onCheckChange'而不是'.onCheckChange'(删除期间) – Steve 2013-02-26 17:50:24

回答

0

我已经修改了你的小提琴,你可以在这里看到的结果http://jsfiddle.net/xjn3Q/9/

var $checkBox = $('#partoption2'), 
$select = $('#parttwoqty'); 


$checkBox.on('change',function(e){ 
if ($(this).is(':checked')){ 
    $select.removeAttr('disabled'); 
}else{ 
    $select.attr('disabled','disabled'); 
} 

});

+0

我是一个jQuery初学者,所以试图把它与多个来源。谢谢,这工作! – stacykathryn 2013-02-26 18:04:26

0

该功能是正确的,但名称不正确。另外,如果你使用jQuery,你不应该直接在html标签上使用onchange属性。

在你的小提琴中,包括jQuery库(1.8+)改变JS到这个作品。需要考虑的另一件事是使用prop而不是attr

$(function(){ 
    $("#partoption2").on('change',function() { 
    if (!$(this).is(':checked')) { 
     $("#parttwoqty").prop('disabled', 'disabled'); 
    } else { 
     $("#parttwoqty").prop('disabled', false); 
    } 
    }); 
}); 

也许你需要禁用选择第一所以会出现禁用,直到复选框被选中, 添加$("#parttwoqty").prop('disabled', 'disabled');$(function(){线后这样做。

0

您的代码存在多个问题,但我只讨论使这个示例有效的问题。

首先,在您的jsFiddle中,您使用的是jQuery,但从不加载它(在左侧)。

其次,由于您使用jQuery的,为什么不使用jQuery的单击处理程序,如:

$('#partoption2').click(function() { 
    if ($("#partoption2").is(':checked')) { 
     $("#parttwoqty").attr('disabled', 'disabled'); 
     $("#partoption2").val("TRUE"); 
    } else { 
     $("#parttwoqty").attr('disabled', false); 
     $("#partoption2").val("FALSE"); 
    } 
});