选中复选框后启用下拉列表

时间:2013-02-26 17:45:05

标签: javascript forms

我已经彻底找到了答案但是一切似乎只给了我一半我需要的东西,这就是我设法让这个开始的原因。我正在尝试做的是在选中复选框时启用下拉菜单,但另外禁用它。我不太确定如何在标签中调用该函数,但是我再也不确定它是否正常工作。

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/

谢谢!

3 个答案:

答案 0 :(得分: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(){即可。

答案 1 :(得分: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");
    }
});

答案 2 :(得分: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');
}

});