选中一个复选框后,选中所有其他复选框

Sma*_*ajl 5 html javascript jsp

我有一个表单和一组复选框.(这些复选框是动态创建的,但我认为这对于这个问题并不重要).生成它们的代码看起来像这样(表单的一部分):

<div id="ScrollCB">
    <input type="checkbox" name="ALL" value="checked" checked="checked">
    All (if nothing selected, this is default) <br>
    <c:forEach items="${serviceList}" var="service">
       <input type="checkbox" name="${service}" value="checked"> ${service} <br>
    </c:forEach>
</div>
Run Code Online (Sandbox Code Playgroud)

我想要做的是控制,是否选中标记为"ALL"的复选框,如果是,则选中所有其他复选框(如果未选中,则取消选中所有复选框).

我尝试用这样的javascript做这个(找到一些教程),但它不起作用(我在javascript中真正的新手,难怪):

<script type="text/javascript">
  $ui.find('#ScrollCB').find('label[for="ALL"]').prev().bind('click',function(){
  $(this).parent().siblings().find(':checkbox').attr('checked',this.checked).attr('disabled',this.checked);
}); });
</script>
Run Code Online (Sandbox Code Playgroud)

你能告诉我一些简单的方法如何让它发挥作用?非常感谢!

小智 11

演示

updated_demo

HTML:

<label><input type="checkbox" name="sample" class="selectall"/> Select all</label>

<div id="checkboxlist">

    <label><input type="checkbox" name="sample[]"/>checkbox1</label><br />
    <label><input type="checkbox" name="sample[]"/>checkbox2</label><br />
    <label><input type="checkbox" name="sample[]"/>checkbox3</label><br />
    <label><input type="checkbox" name="sample[]"/>checkbox4</label><br />

</div>
Run Code Online (Sandbox Code Playgroud)

JS:

$('.selectall').click(function() {
    if ($(this).is(':checked')) {
        $('div input').attr('checked', true);
    } else {
        $('div input').attr('checked', false);
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 我建议使用`.prop()`而不是`.attr()`来设置复选框的checked属性,至少使用更新版本的jQuery. (5认同)
  • 这有效!但是,如果我这样做一次,就完成了.如果我这样做,例如,检查>取消选中>检查,它不再工作了...怎么样? (2认同)