javascript - 如何在使用 jquery 加载时禁用/启用复选框?
问题描述
我想加载选中的复选框.group
。.group
以及未选中的禁用者。我可以切换它们,但不能禁用未选中.group
的禁用。
加载后,我希望所有区域都可以Group 2
点击。虽然 all in Group
1 显示为灰色,但稍后可单击。
以及当我取消选中Group
复选框时。必须禁用所有区域。Group
只有在选中a 时,它们才能单击。
$(function() {
enable_cb();
$(".group").click(enable_cb);
$(".zone").attr("disabled",true);//disabled by default
});
function enable_cb() {
$(this).closest('div').find(".zone").prop("disabled", !this.checked);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"></script>
<table>
<tr>
<td>
<div class="btn-group w-100" role="group">
<input type="checkbox" class="btn-check group" id="g_1" name="g_1" autocomplete="off" />
<label class="btn btn-outline-success" for="g_1">Group 1</label>
<input type="checkbox" class="btn-check zone" id="zone_1a" name="zone_1a" autocomplete="off" />
<label class="btn btn-outline-success" for="zone_1a">Zone A</label>
<input type="checkbox" class="btn-check zone" id="zone_1b" name="zone_1b" autocomplete="off" />
<label class="btn btn-outline-success" for="zone_1b">Zone B</label>
<input type="checkbox" class="btn-check zone" id="zone_1c" name="zone_1c" autocomplete="off" />
<label class="btn btn-outline-success" for="zone_1c">Zone C</label>
</div>
</td>
</tr>
<tr>
<td>
<div class="btn-group w-100" role="group">
<input type="checkbox" class="btn-check group" id="g_2" name="g_2" checked autocomplete="off" />
<label class="btn btn-outline-success" for="g_2">Group 2</label>
<input type="checkbox" class="btn-check zone" id="zone_2a" name="zone_2a" autocomplete="off" />
<label class="btn btn-outline-success" for="zone_2a">Zone A</label>
<input type="checkbox" class="btn-check zone" id="zone_2b" name="zone_2b" autocomplete="off" />
<label class="btn btn-outline-success" for="zone_2b">Zone B</label>
<input type="checkbox" class="btn-check zone" id="zone_2c" name="zone_2c" autocomplete="off" />
<label class="btn btn-outline-success" for="zone_2c">Zone C</label>
</div>
</td>
</tr>
</table>
请在这里找到小提琴:https ://jsfiddle.net/b50gwmzu/
解决方案
迭代未选中的组复选框并禁用他们的兄弟姐妹和他们自己
$("input.group").not(':checked').each(function(){
$(this).siblings(':checkbox').addBack().prop('disabled', true);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"></script>
<table>
<tr>
<td>
<div class="btn-group w-100" role="group">
<input type="checkbox" class="btn-check group" id="g_1" name="g_1" autocomplete="off" />
<label class="btn btn-outline-success" for="g_1">Group 1</label>
<input type="checkbox" class="btn-check zone" id="zone_1a" name="zone_1a" autocomplete="off" />
<label class="btn btn-outline-success" for="zone_1a">Zone A</label>
<input type="checkbox" class="btn-check zone" id="zone_1b" name="zone_1b" autocomplete="off" />
<label class="btn btn-outline-success" for="zone_1b">Zone B</label>
<input type="checkbox" class="btn-check zone" id="zone_1c" name="zone_1c" autocomplete="off" />
<label class="btn btn-outline-success" for="zone_1c">Zone C</label>
</div>
</td>
</tr>
<tr>
<td>
<div class="btn-group w-100" role="group">
<input type="checkbox" class="btn-check group" id="g_2" name="g_2" checked autocomplete="off" />
<label class="btn btn-outline-success" for="g_2">Group 2</label>
<input type="checkbox" class="btn-check zone" id="zone_2a" name="zone_2a" autocomplete="off" />
<label class="btn btn-outline-success" for="zone_2a">Zone A</label>
<input type="checkbox" class="btn-check zone" id="zone_2b" name="zone_2b" autocomplete="off" />
<label class="btn btn-outline-success" for="zone_2b">Zone B</label>
<input type="checkbox" class="btn-check zone" id="zone_2c" name="zone_2c" autocomplete="off" />
<label class="btn btn-outline-success" for="zone_2c">Zone C</label>
</div>
</td>
</tr>
</table>
推荐阅读
- jakarta-ee - 对于像 fName (Struts2 Issue-WW-4616) 这样的属性,OGNL3.0.21 属性绑定问题是否有任何解决方法?
- wordpress - 木材将小部件添加到全局上下文
- sql - 在大查询中按月和年分组的日期频率中填充零
- python - 我无法正确格式化图表上的 x 轴
- sql - 我需要将一列分成 3 个不同的部分
- rest - Sharepoint Online - Rest API 过滤器不起作用
- php - 使用 Symfony4 实现 FosUser 的问题
- android - 即使更新到 RN 0.58.4,React 本机溢出也无法在 android 中工作
- c# - NServiceBus 和 Azure 服务总线的发布/订阅事件问题
- spring-batch - 春季批量测试