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;
二、配置动态动作实现启用/禁用+必填切换
动态动作基础配置
- 事件:
Change - 选择类型:
Item(s) - 项:
P100_ENTERED_DATE - 客户端条件:选择
JavaScript表达式,粘贴上面修正后的代码
- 事件:
真动作(日期小于当前日期时执行)
- 添加第一个动作:
Enable,选择项P100_REASON - 添加第二个动作:
Execute JavaScript Code,输入代码:apex.item("P100_REASON").setRequired(true);
- 添加第一个动作:
假动作(日期不小于当前日期时执行)
- 添加第一个动作:
Disable,选择项P100_REASON - 添加第二个动作:
Execute JavaScript Code,输入代码:apex.item("P100_REASON").setRequired(false);
- 添加第一个动作:
三、页面加载时的初始化处理
如果页面打开时P100_ENTERED_DATE可能已经是小于当前日期的值,需要额外添加一个页面加载触发的动态动作:
- 事件:
Page Load - 客户端条件:同样使用上面的JavaScript表达式
- 动作组和上述真/假动作完全一致,确保页面加载时字段状态正确
内容的提问来源于stack exchange,提问作者vr_oracle
相关产品推荐
相关产品推荐

