根据一个复选框的状态禁用复选框

时间:2010-12-14 21:43:49

标签: javascript jquery

如果选中“选择不回答”,我需要禁用其他复选框,这是我的代码和HTML,有关为什么它不起作用的任何帮助?

function toggleStatus() {
if ($('#toggleElement').is(':checked')) {
    $('#living :input').attr('disabled', true);
} else {
    $('#living :input').removeAttr('disabled');
}

HTML

<p>With whom do you live? Choose all that apply<br/>
    <input type="checkbox" name="living" value="alone" id="living">
    Live alone <br>
    <input type="checkbox" name="living" value="husband" id="living">
    Husband <br>
    <input type="checkbox" name="living" value="partner" id="living">
    Partner <br>
    <input type="checkbox" name="living" value="children" id="living">
    Children <br>
    <input type="checkbox" name="living" value="parents" id="living">
    Parents <br>
    <input type="checkbox" name="living" value="other_relatives" id="living">
    Other relatives <br>
    <input type="checkbox" name="living" value="religion" id="living">
    Religious order <br>
    <input type="checkbox" name="living" value="no_answer" 
                id="toggleElement">
    Choose not to answer <br>
</p>

2 个答案:

答案 0 :(得分:4)

我没有看到你的函数在任何地方被调用,你可以在document.ready处理程序中进行操作,并简化它,如下所示:

$(function() {
  $("#toggleElement").change(function() {
    $('input[name=living]').not(this).attr('disabled', this.checked);
  });
});

另请注意,您的选择器不正确,它应该只基于名称......并且该ID应该被忽略,因为它是重复的。

答案 1 :(得分:1)

请改为尝试:

if ($('#toggleElement').is(':checked')) {
    $('#living :input').attr('disabled', "disabled");
} else {
    $('#living :input').attr('disabled', false);
}