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