禁用基于其他字段的表单字段不起作用

时间:2013-02-17 12:07:21

标签: javascript jquery html forms

我有一个带有多选字段A的表单

<select multiple="multiple" name="A"></select>

和布尔复选框B

<input type="checkbox" name="B" />

如果选中字段B,我想禁用字段A.如果字段B未选中,我想再次重新启用字段A.

我试过了:

$('input[name="B"]').toggle(function() {
    $('select[name="A"]').addClass('uneditable-input').attr('disabled', 'disabled');
}, function() {
    $('select[name="A"]').removeClass('uneditable-input').removeAttr('disabled');
});

然而,这不起作用。相反,它使复选框从我的网页中消失。我怎样才能实现我上面描述的内容?

1 个答案:

答案 0 :(得分:3)

  

我如何实现上述目标?

使用click来挂钩(单个)处理程序,然后在处理程序中检查toggle以查看是否已检查this.checked,而不是B。 / p>

$('input[name="B"]').click(function() {
    if (this.checked) {
        $('select[name="A"]').addClass('uneditable-input').attr('disabled', 'disabled');
    }
    else {
        $('select[name="A"]').removeClass('uneditable-input').removeAttr('disabled');
    }
});