You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

勾选不同div下checkbox时触发alert提示选中项将被取消的实现问题

解决方案

需求梳理

  • 同一div(分组)内的checkbox可自由多选,无额外触发逻辑
  • 跨分组勾选checkbox时,先弹出alert提示「your selected items will be unchecked」,再清空其他分组的已选中状态

原有代码问题分析

现有代码未做场景判断,只要任意checkbox状态发生变化就会弹出提示,且执行顺序为先清空其他分组选中项再弹提示,和需求的触发条件、执行顺序都不匹配。

修正后代码

JS逻辑

$("input:checkbox").on('change', e => {
  // 获取当前操作checkbox所属的分组
  const currentGroup = $(e.target).closest('div');
  // 判定其他分组是否存在已选中的checkbox
  const hasOtherChecked = currentGroup.siblings().find('input:checkbox:checked').length > 0;
  // 仅跨分组有选中项时触发提示和清空逻辑
  if (hasOtherChecked) {
    alert("your selected items will be unchecked");
    currentGroup.siblings().find('input:checkbox').prop('checked', false);
  }
});

配套HTML代码

<div class="dashboard">
  <div id="fr">
    <h3>Fruits</h3>
    <label>
  <input type="checkbox" name="check1" />Kiwi</label>
    <label>
  <input type="checkbox" name="check2" />Jackfruit</label>

  </div>
  <div id="an">
    <h3>Animals</h3>
    <label>
  <input type="checkbox" name="check1" />Tiger</label>
    <label>
 <input type="checkbox" name="check2" />Sloth</label>

  </div>

  <div id="veg">
    <h3>vegetables</h3>
    <label>
  <input type="checkbox" name="check1" />Broccoli</label>
    <label>
  <input type="checkbox" name="check2" />Carrots</label>

  </div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

内容的提问来源于stack exchange,提问作者Yousef Salama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:24:00