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

APEX复选框存入页面项异常:取消勾选仍添加值的修复方法

问题修复方案

你的代码逻辑问题在于:每次点击复选框时,无论当前是勾选还是取消状态,都会把当前值添加到数组中,导致取消勾选时值仍会累加进页面项。以下是两种可靠的修复方式:

方法一:重新收集所有已勾选值(推荐)

直接每次点击时重新获取所有处于勾选状态的复选框值,确保页面项的值始终和实际选中状态一致,同时避免全局数组可能出现的同步问题(比如报表分页、刷新后):

$(document).on('click', '.my_value', function(){
    // 获取所有已勾选的复选框值,转换为数组
    const selectedIds = $('.my_value:checked').map(function(){
        return $(this).val();
    }).get();
    // 将数组用逗号分隔后存入页面项(APEX页面项通常用逗号分隔多值)
    $s('P9_SET', selectedIds.join(','));
});

方法二:根据复选框状态更新数组

如果需要保留数组维护的方式,可通过判断当前复选框的勾选状态,动态添加或移除值:

let serviceIds = [];
$(document).on('click', '.my_value', function(){
    const currentId = $(this).val();
    if ($(this).is(':checked')) {
        // 勾选时添加,避免重复添加同一值
        if (!serviceIds.includes(currentId)) {
            serviceIds.push(currentId);
        }
    } else {
        // 取消时从数组中移除对应值
        serviceIds = serviceIds.filter(id => id !== currentId);
    }
    $s('P9_SET', serviceIds.join(','));
});

额外注意

使用$(document).on('click', '.my_value', ...)而非直接绑定到.my_value,是为了兼容交互式报表分页、刷新后加载的新行中的复选框,确保所有动态生成的复选框都能触发事件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:42:18