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

如何通过jQuery+Ajax实现选中checkbox数据的展示功能

实现步骤

第一步:新增已选商户展示容器

在你的HTML代码中,添加一个独立的div用来展示已勾选的商户,建议放在#sparepartList所在的表单组下方即可:

<!-- 已选商户展示区域 -->
<div class="form-group">
  <label class="control-label col-xs-3">已选商户</label>
  <div class="col-xs-8" id="selected-merchants" style="padding: 10px; border: 1px solid #e5e5e5; min-height: 40px;">
  </div>
</div>

第二步:修改JS逻辑,添加checkbox勾选监听

因为你的checkbox是AJAX请求后动态生成的,所以需要用事件委托的方式绑定监听事件,避免动态生成的元素无法触发事件。修改后的完整JS代码如下:

$('#merchantname').keyup(function() {
  var merchantname = $(this).val();
  if(merchantname.length >= 3){
    $.ajax({
      type: 'POST',
      url: "<?php echo base_url('Newsletter/GetMerchantName');?>",
      cache : false,
      data: {'merchantname': merchantname},
      dataType: "json",
      async: false,
      beforeSend: function() {
        $("#loading-image").show();
      },   
      success: function(response) {
        $('#sparepartList').empty();
        $.each(response, function(key,value) {
          // 给checkbox加自定义类方便选择
          let li = $('<li><input type="checkbox" class="merchant-checkbox" name="merchantName[]" value="' + value.merchantName + '" />' +
                      '<input type="text" name="sparepart" value="' + value.merchantName + '" /></li>');
          $('#sparepartList').append(li);
        });
        $("#loading-image").hide();
      },
      error: function(response) {
        console.log(response);
      } 
    })
    return false;
  }
});

// 事件委托监听checkbox勾选状态变化
$(document).on('change', '.merchant-checkbox', function() {
  const merchantName = $(this).val();
  const isChecked = $(this).is(':checked');
  const selectedContainer = $('#selected-merchants');
  
  if (isChecked) {
    // 勾选时添加到已选区域,避免重复添加
    if (selectedContainer.find(`[data-merchant="${merchantName}"]`).length === 0) {
      const merchantItem = `<span data-merchant="${merchantName}" style="display: inline-block; margin: 0 8px 5px 0; padding: 3px 8px; background: #f0f0f0; border-radius: 4px;">${merchantName}</span>`;
      selectedContainer.append(merchantItem);
    }
  } else {
    // 取消勾选时从已选区域移除对应项
    selectedContainer.find(`[data-merchant="${merchantName}"]`).remove();
  }
});

可选调整说明

  • 如果需要展示在对应checkbox下方而不是独立区域,可以把勾选后的插入逻辑改成往当前checkbox所在的li后面插入展示项,取消时删除对应的后续节点即可
  • 已选区域的样式可以根据你的页面设计自行调整,比如加删除按钮、修改背景色等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:57:01