Oracle Apex 交互式报告问题 - 每次更改选择列表值后都需要刷新浏览器

问题描述 投票:0回答:1

我是 Oracle Apex 新手。

我对带有复选框的交互式报告有疑问。 IR 的查询如下:

SELECT APEX_ITEM.checkbox2 (1, deptno, p_attributes => 'class="deptno_cb"') "Select",
deptno,
dname,
loc
FROM dept
WHERE deptno = NVL ( :p16_department_list, deptno);

Oracle apex 页面顶部有一个选择列表。选择列表值后,IR 报告会更新。选择列表动态操作刷新 IR 区域。

“函数和全局变量声明”中的页面 Javascript 有以下代码来限制用户一次选择/选中一个复选框。

$('#object_details_static_id input[type=checkbox][name=f01]').on('change',function(){
$('#object_details_static_id input[type=checkbox][name=f01]').not(this).prop('checked',false);
});

问题是,当我更改选择列表值时,用户可以选择多个复选框

enter image description here

当我刷新浏览器时,页面(复选框)工作正常,并且页面限制用户一次只能选择一个复选框。 enter image description here

我原以为上面的 JavaScript 代码会限制用户始终只能选择一个复选框,但当我更改选择列表值时,这种情况并没有发生。我必须刷新浏览器才能使页面正常工作。

我在这里做错了什么吗?任何帮助将不胜感激。

谢谢

Oracle Apex。

我期待 javascript 代码

$('#object_details_static_id input[type=checkbox][name=f01]').on('change',function(){ $('#object_details_static_id input[type=checkbox][name=f01]').not(this).prop('checked',false); });

会限制用户始终只能选择一个复选框,但当我更改选择列表值时不会发生这种情况。更改选择列表后,我必须刷新浏览器才能使页面按预期工作..

javascript oracle-apex
1个回答
0
投票

需要委托javascript事件。您看到的是预期的行为,因为事件只能添加到 DOM 中实际存在的元素中。如果动态添加元素,则必须从静态父元素委托事件(此文本复制自此答案)。

“APEX 方式”是尽可能使用动态操作来处理任何事件。以下是如何做到这一点:

  • emp 红外光源

  • 页面项 P215_DEPTNO 是 DEPT 表上选择列表类型的页面项
  • P215_DEPTNO 的更改有一个动态操作来刷新 emp IR
  • 单击 jquery 选择器
    .empno_cb
    有一个动态操作。 “Event Scope”属性指示即使报表刷新(这是 DOM 更改),事件也将被委托并绑定到元素。通过将其设置为“静态”来测试这一点。请注意,它只会工作一次,并且在刷新报告时不起作用。

  • 此 DA 具有“执行 Javascript 代码”类型的操作:

仅此而已。

这也可以在没有动态动作的情况下完成。 IR 的静态 ID 为“emp-ir”。 js 代码将是:

$(document).on("click", "#emp-ir", function()
  {
    $('#emp-ir input[type=checkbox][name=f01]').on('change',function(){
    $('#emp-ir input[type=checkbox][name=f01]').not(this).prop('checked',false);
    });  
  }
);
© www.soinside.com 2019 - 2024. All rights reserved.