Oracle Apex:如何将普通页面输入项同步到模态页面项
解决APEX中普通页面字段与模态页面字段同步的问题
方案1:模态页面已打开时实时同步
模态页面未打开时,其DOM元素尚未加载,直接用动态操作绑定普通页面字段的变化事件会找不到目标元素。可通过以下方式实现实时同步:
- 在普通页面(页面7)的
P7_PRODUCT字段上创建动态操作:- 触发条件:选择
Change事件 - 动作选择Execute JavaScript Code,输入代码:
// 检查模态页面是否处于打开状态 var modalDialog = apex.dialog.getDialog(); if (modalDialog && modalDialog.length > 0) { // 将普通页面字段值同步到模态页字段 apex.item("P8_PRODUCT").setValue(this.triggeringElement.value); }
- 触发条件:选择
方案2:打开模态页面时自动带入当前值
确保打开模态页时,直接把P7_PRODUCT的当前值传递给P8_PRODUCT,避免打开后值不同步:
- 编辑打开模态页面的按钮:
- 在按钮的目标设置中,选择对应的模态页面(页面8)
- 在设置 -> 传递项中添加:
P8_PRODUCT:P7_PRODUCT
P8_PRODUCT会自动获取P7_PRODUCT的当前值。
方案3:结合两种方案(推荐)
同时配置上述两种方式,既保证打开模态页时带值,又能在模态页打开后实时同步输入内容:
- 按方案2设置按钮的传递项
- 按方案1添加动态操作实现实时同步
常见排查点
- 确认模态页面的项名称拼写正确(如
P8_PRODUCT是否有误) - 检查动态操作的触发条件是否为
Change事件 - 可通过浏览器控制台执行
console.log(apex.item("P8_PRODUCT")),确认是否能正确获取模态页字段元素
内容的提问来源于stack exchange,提问作者Arianna Nicastro
相关产品推荐
相关产品推荐

