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

如何用jQuery在Bootstrap模态框内创建动态复选框并获取选中项?

实现Bootstrap模态框动态渲染复选框并获取选中项

没问题,我来帮你一步步搞定这个需求!咱们从调整模态框结构、动态渲染复选框到最后获取选中项,一步步来:

第一步:调整模态框HTML结构

先给模态框的body部分加个专门放复选框的容器,这样后续可以动态把复选框渲染进去:

<div class="modal fade" id="myModal" tabindex="-1" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="myModalLabel"></h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        <!-- 新增复选框容器,用来承载动态生成的复选框 -->
        <div id="checkbox-group" class="form-checks"></div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">取消</button>
        <button type="button" class="btn btn-primary" id="confirm-btn">确认选择</button>
      </div>
    </div>
  </div>
</div>

第二步:动态渲染复选框到模态框

假设你已经拿到了要渲染的列表数据(比如叫softwareList,你可以替换成自己实际的数据源),修改show.bs.modal的事件逻辑,把列表转成复选框:

// 示例列表数据,替换成你实际获取到的列表
const softwareList = [
  { label: "软件版本1", value: "v1.0.0" },
  { label: "软件版本2", value: "v2.1.0" },
  { label: "软件版本3", value: "v3.0.1" }
];

$('#myModal').on('show.bs.modal', function (event) {
  const button = $(event.relatedTarget);
  const recipient = button.data('whatever'); // 从按钮拿到的模态框标题文本
  const modal = $(this);

  // 更新模态框标题
  modal.find('.modal-title').text(recipient);

  // 先清空容器,避免重复渲染旧的复选框
  const checkboxContainer = modal.find('#checkbox-group');
  checkboxContainer.empty();

  // 遍历列表,逐个生成复选框并添加到容器
  softwareList.forEach(item => {
    const checkboxItem = `
      <div class="form-check mb-2">
        <input class="form-check-input software-option" type="checkbox" value="${item.value}" id="opt-${item.value}">
        <label class="form-check-label" for="opt-${item.value}">
          ${item.label}
        </label>
      </div>
    `;
    checkboxContainer.append(checkboxItem);
  });
});

第三步:获取选中的复选框项

给确认按钮绑定点击事件,收集所有被选中的复选框值:

$('#confirm-btn').on('click', function() {
  // 收集所有选中的复选框值
  const selectedOptions = [];
  $('.software-option:checked').each(function() {
    selectedOptions.push($(this).val());
  });

  // 这里可以对选中的数据做后续处理,比如打印、提交接口等
  console.log('你选中的项:', selectedOptions);
  
  // 处理完后关闭模态框
  $('#myModal').modal('hide');
});

额外小提示

如果你的列表数据是通过按钮的data-*属性传递的(比如data-software-list),可以把softwareList替换成button.data('softwareList'),记得传递的时候要转成JSON格式(比如data-software-list='[{"label":"软件版本1",...}]')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:14:12