APEX 22.2.4:自动完成文本字段选中值/失焦时执行代码的方法
APEX 22.2.4 自动完成文本字段两类场景的触发实现方案
针对你提到的两个场景,可通过以下方式实现代码触发:
场景一:用户从LOV下拉列表选中值时触发
- 创建新动态操作,命名为「LOV选中值时执行代码」
- 事件类型选择Custom,事件名称填写
apexafterselect - 选择器类型选Item,指定你的自动完成文本字段
- 在「True」分支添加「Execute JavaScript Code」动作,写入需要执行的业务代码
场景二:用户未选择LOV值就离开字段时触发
需要结合blur事件+值有效性判断来实现:
- 创建新动态操作,命名为「离开字段且未选LOV值时执行代码」
- 事件类型选择Blur,选择器类型选Item,指定目标字段
- 添加条件:类型选JavaScript Expression,输入判断逻辑(判断当前值不在LOV选项中):
// 获取当前自动完成组件的LOV选项文本集合 var lovOptionTexts = $('#' + this.triggeringElement.id) .autocomplete('widget') .find('li') .map(function(){ return $(this).text().trim(); }) .get(); // 返回是否未选中LOV值的判断结果 return !lovOptionTexts.includes($(this.triggeringElement).val().trim()); - 在「True」分支添加「Execute JavaScript Code」动作,写入对应的处理代码
进阶优化:基于LOV实际值判断(而非显示文本)
如果需要基于LOV的实际返回值(而非界面显示文本)做判断,可先在页面加载时缓存LOV数据:
- 创建页面加载时的动态操作,执行以下JS代码(替换成你的项ID):
apex.server.plugin( apex.util.plugin.getPlugin('APEX.LOV', 'fetch'), { pageItems: '#P1_YOUR_AUTOCOMPLETE_ITEM' }, { dataType: 'json' } ).done(function(data){ // 将LOV的实际值存储到全局变量 window.lovActualValues = data.items.map(function(item){ return item.value; }); }); - 然后将场景二的条件表达式替换为:
return !window.lovActualValues.includes($(this.triggeringElement).val().trim());
内容的提问来源于stack exchange,提问作者Eslam
相关产品推荐
相关产品推荐

