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

购物车无商品时如何禁用modal模态框内的提交按钮?

实现购物车为空时禁用模态框提交按钮的方案

你可以根据自己的需求选择以下两种方案,也可以同时使用适配全场景:

方案1:服务端PHP直接渲染(页面加载时生效)

在渲染模态框底部按钮时,直接通过PHP判断购物车状态控制按钮是否可用,无需额外引入JS:

  1. 先在模态框代码上方新增购物车状态判断
<?php
// 判断购物车是否为空
$isCartEmpty = !isset($_SESSION['cart']) || empty($_SESSION['cart']);
?>
  1. 修改底部提交按钮的代码,为空时添加禁用样式与属性:
<div class="modal-footer">
    <a type="submit" 
       class="btn btn-primary <?php echo $isCartEmpty ? 'disabled' : '';?>" 
       id="btn-mohon-cart" 
       name="mohonbtn" 
       <?php echo $isCartEmpty ? 'style="pointer-events:none;opacity:0.6;"' : '';?>
       href="<?php echo ROOT_PATH; ?>pusat_sumber/penyelidik/permohonan_penyelidik.php">
       Mohon
    </a>
</div>

注:原生a标签的disabled属性不生效,所以需要额外添加pointer-events:none禁用点击

方案2:JavaScript动态控制(适配删除商品后实时生效场景)

如果支持用户在模态框内删除商品,删除到最后一个时需要实时禁用按钮,可引入以下JS代码(依赖jQuery,你现有项目已经用了Bootstrap的话默认支持):

// 模态框打开时自动检查购物车状态
$('#cartmodal').on('show.bs.modal', function () {
  checkCartStatus();
})

// 点击删除商品按钮后重新检查购物车状态
$(document).on('click', '.deleteitem', function() {
  // 此处保留你原本的删除商品逻辑
  $(this).closest('tr').remove();
  checkCartStatus();
})

// 公用购物车状态检查方法
function checkCartStatus() {
  // 统计购物车商品行数
  const cartItemCount = $('#cartBody tr').length;
  const $submitBtn = $('#btn-mohon-cart');
  if (cartItemCount === 0) {
    // 购物车为空时禁用按钮
    $submitBtn.addClass('disabled').css({'pointer-events': 'none', 'opacity': 0.6});
  } else {
    // 有商品时启用按钮
    $submitBtn.removeClass('disabled').css({'pointer-events': 'auto', 'opacity': 1});
  }
}

如果需要在购物车为空时显示提示,可在cartBody内为空时新增提示行:

<tbody id='cartBody'>      
    <?php if (isset($_SESSION['cart']) && !empty($_SESSION['cart'])) {
        foreach($_SESSION['cart'] as $k => $v){ ?>
        <tr id="view-cart">
        <td><?php echo $v['id_arkib'] ?> </td>
        <td><?php echo $v['tajuk']?> </td>
        <td><button class="btn btn-danger mdi mdi-delete deleteitem" required>Padam</button></td>
        </tr>
    <?php }
    } else { ?>
        <tr class="empty-tip">
            <td colspan="3" style="text-align:center;">购物车暂无商品</td>
        </tr>
    <?php } ?>         
</tbody>

此时需要修改checkCartStatus里的行数统计逻辑,排除提示行:

const cartItemCount = $('#cartBody tr:not(.empty-tip)').length;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 08:24:05