Oracle APEX 表格形式选择列表禁用

Posted

技术标签:

【中文标题】Oracle APEX 表格形式选择列表禁用【英文标题】:Oracle APEX Tabular form select list disable 【发布时间】:2017-02-14 18:56:35 【问题描述】:

使用 Oracle Apex 4.2

我有一个表格形式,您可以在其中创建新行并更新现有数据。我在尝试在表格形式的选择列表中禁用或使项目只读时遇到问题。

例如,选择列表中有; 橙色、绿色、蓝色、红色

我希望能够根据另一列中的值禁用或仅读取选择列表中的蓝色和橙色项目。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

这是 Apex 5 中的快速测试,但我认为您可以在 4.2 中使用类似的方法 1. 在页面加载时创建动态操作 - 将动作设置为执行 javascript 代码 - 选择类型到 jQuery 选择器 - 检查元素以找到他的 ID(在我的情况下为“f01_0001”) 2. 更改“如果”条件以匹配您的条件。例如:

var op = document.getElementById("f01_0001").getElementsByTagName("option");
for (var i = 0; i < op.length; i++) 
    // lowercase comparison for case-insensitivity
    if (op[i].value.toLowerCase() == "red") 
        op[i].disabled = true;
    

【讨论】:

【参考方案2】:

我猜你想根据其他项目的值将禁用样式应用于选择项目的 2 个选项。

假设,

表格形式的第一列是文本字段,具有需要引用的值 表格形式的第五列是带有蓝色和橙色选项的选择项 表格中有多行 具有通用名称“f01”但基于行位置的不同 ID 的输入项的集合。例如,“f01_000X”,其中 x 是行索引。 具有通用名称“f05”但基于行位置的不同 ID 的选定项的集合。例如,“f05_000X”,其中 x 是行索引。 当第一列中的文本字段值为“abc”时,将选择选项样式化为蓝色和橙色。风格化,使得该选项是不可选择的。 在页面加载时进行样式化(而不是在引用的文本字段值更改或区域刷新时)

解决方案,

在页面加载时循环遍历所有文本项,识别当前项的行索引,获取选择项的蓝色和橙色选项的句柄,并在识别行的帮助下引用文本字段,然后相应地设置样式。

关于如何处理这个的代码,

Javascript 函数和全局变量声明

function updateRowStyle(rowIndex) 
    var inp_reference = $("#f01_" + rowIndex);
    var opt_blue = $("#f05_" + rowIndex + " option:contains('blue')");
    var opt_orange = $("#f05_" + rowIndex + " option:contains('orange')");;
    if (inp_reference.val() === "ABC") 
        opt_blue.prop("disabled", true);
        opt_orange.prop("disabled", true);
     else 
        opt_blue.prop("disabled", false);
        opt_orange.prop("disabled", false);
    

页面加载时执行

$("[name=f01]").each(function() 
    updateRowStyle(this.id.split("_").pop());
);

【讨论】:

以上是关于Oracle APEX 表格形式选择列表禁用的主要内容,如果未能解决你的问题,请参考以下文章

Oracle APEX 选择列表

APEX 以表格形式创建动态值列表

在 Oracle APEX 中基于“行选择器”插入记录

Oracle Apex 5.1:基于 LOV(值列表)的报告列显示返回值而不是显示值

Oracle Apex - 如何使用动态操作更新更改操作的值列表?

Oracle Apex 智能选择列表