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

如何用JQuery实现动态地址表单中主地址复选框的互斥选中效果

实现方案

步骤1:调整地址表单模板

首先给主地址复选框添加统一的公共类,方便全局选择,修改模板中复选框代码:

<!-- 原有class基础上新增js-primary-checkbox公共类 -->
<input type="checkbox" class="primary-%ID% js-primary-checkbox" name="primary-%ID%" id="primary-%ID%" />

步骤2:添加jQuery事件监听代码

因为表单是动态生成的,需要用事件委托绑定点击事件,把下面的代码放到全局JS脚本中即可,不需要放在addNewAddress函数内部:

// 事件委托绑定到固定存在的父容器#addressContainer,比绑定到document性能更高
$('#addressContainer').on('click', '.js-primary-checkbox', function() {
    // 只有当前点击的复选框是被勾选状态时,才取消其他所有同类复选框的选中状态
    if ($(this).is(':checked')) {
        $('.js-primary-checkbox').not(this).prop('checked', false);
    }
});

可选优化

如果需要限制用户必须保留至少一个主地址(不能取消所有勾选),可以调整代码如下:

$('#addressContainer').on('click', '.js-primary-checkbox', function() {
    if ($(this).is(':checked')) {
        $('.js-primary-checkbox').not(this).prop('checked', false);
    } else {
        // 如果取消勾选后没有其他选中的主地址,禁止本次取消操作
        if ($('.js-primary-checkbox:checked').length === 0) {
            $(this).prop('checked', true);
        }
    }
});

额外提示

你原有addNewAddress函数里的newAssetIndex变量属于笔误,建议替换为newAddressIndex,否则赋值逻辑会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:54:04