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

时间:2017-02-14 18:56:35

标签: javascript oracle-sqldeveloper oracle-apex

使用Oracle Apex 4.2

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

例如,选择列表中包含; 橙色,绿色,蓝色,红色

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

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

我猜您想根据其他项目的值将禁用的样式应用于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());
});

答案 1 :(得分:0)

这是Apex 5中的快速测试,但我认为你可以在4.2中使用类似的方法 1.在页面加载上创建动态操作
     - 设置执行JavaScript代码的操作      - jQuery选择器的选择类型
enter image description here
     - 检查元素以找到他的id(在我的情况下" f01_0001")
enter image description here
 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;
    }
}