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

Oracle APEX日期字段动态动作求助:触发字段启用与必填设置

Oracle APEX 动态动作配置:日期字段触发启用必填项

一、修正客户端条件的JavaScript表达式

你当前的JS代码存在几个核心问题:

  • 引用项名错误:代码里用了P102_CUST_REQUEST_DATE,但实际要判断的目标字段是P100_ENTERED_DATE
  • 未将表单返回的日期字符串转换为可直接比较的Date对象
  • 当前日期未忽略时分秒,直接比较会导致同一天的时间差干扰判断逻辑

替换为以下正确的表达式:

// 获取表单日期字段值并转换为Date对象
var enteredDate = new Date(apex.item("P100_ENTERED_DATE").getValue());
// 获取当前日期并重置时分秒为0,避免时间部分干扰纯日期比较
var today = new Date();
today.setHours(0, 0, 0, 0);

// 判断输入日期是否小于当前日期
return enteredDate < today;

二、配置动态动作实现启用/禁用+必填切换

  1. 动态动作基础配置

    • 事件:Change
    • 选择类型:Item(s)
    • 项:P100_ENTERED_DATE
    • 客户端条件:选择JavaScript表达式,粘贴上面修正后的代码
  2. 真动作(日期小于当前日期时执行)

    • 添加第一个动作:Enable,选择项P100_REASON
    • 添加第二个动作:Execute JavaScript Code,输入代码:
      apex.item("P100_REASON").setRequired(true);
      
  3. 假动作(日期不小于当前日期时执行)

    • 添加第一个动作:Disable,选择项P100_REASON
    • 添加第二个动作:Execute JavaScript Code,输入代码:
      apex.item("P100_REASON").setRequired(false);
      

三、页面加载时的初始化处理

如果页面打开时P100_ENTERED_DATE可能已经是小于当前日期的值,需要额外添加一个页面加载触发的动态动作:

  • 事件:Page Load
  • 客户端条件:同样使用上面的JavaScript表达式
  • 动作组和上述真/假动作完全一致,确保页面加载时字段状态正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 02:58:21