使用Oracle Apex 4.2
我有一个表格形式,您可以在其中创建新行并可以更新现有数据。我在尝试禁用或仅在表格形式的选择列表中读取项目时遇到问题。
例如,选择列表中包含; 橙色,绿色,蓝色,红色
我希望能够根据另一列中的值禁用或只读取选择列表中的蓝色和橙色项。
任何帮助都将不胜感激。
答案 0 :(得分:1)
我猜您想根据其他项目的值将禁用的样式应用于2个选项的选项。
假设,
解,
遍历页面加载中的所有文本项,识别当前项的行索引,获取选择项的蓝色和橙色选项的句柄,并在标识行的帮助下引用文本字段,然后相应地设置样式。
关于如何解决这个问题的代码,
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选择器的选择类型
- 检查元素以找到他的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;
}
}