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
相关产品推荐
相关产品推荐

