Oracle APEX 表格形式 select 列表禁用

Oracle APEX Tabular form select list disable

使用 Oracle Apex 4.2

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

例如select列表中有; 橙色、绿色、蓝色、红色

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

如有任何帮助,我们将不胜感激。

这是 Apex 5 中的快速测试,但我认为您可以在 4.2 中使用类似的方法
1. 在页面加载时创建动态操作
- 将操作设置为执行 JavaScript 代码 - 选择类型为 jQuery 选择器

- 检查元素以找到他的 ID(在我的例子中 "f01_0001")

2. 更改 "if" 条件以符合您的条件。例如:

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;
    }
}

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

假设,

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

解决方案,

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

有关如何处理此问题的代码,

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());
});