Oracle APEX - 从 DA 条件访问 html 控件时出现问题

Oracle APEX - issue accessing html control from a DA condition

我有一个自定义 DA,它在 JavaScript 表达式为文档时调用,我希望它仅在满足特定客户端条件时执行。

所以我将客户端条件设置为javascript表达式:

document.getElementById("myfield").options[status.selectedIndex].text != "Closed"

问题是 myfield 不是页面项目,而是 html 控件 - select 框。所以我必须使用 javascript 表达式而不是 Item != Value.

现在,当我 运行 页面并尝试执行激活我的 DA 的操作时,正在检查条件并且它会出错并显示 Cannot read property 'text' of undefined。如何更改我的 javaScript 表达式以使其正常工作?

在 APEX 中,$x 是 shorthand reference/pointer 到 document.getElementById,所以你应该可以这样做:

$x("myfield").options[$x("myfield").selectedIndex].text != "Closed"

使用JavaScript表达式时,如果您需要做的不仅仅是一个基本表达式,您可以使用一个立即调用的函数表达式来分解逻辑。这是一个例子:

(function(){
  var select = $x('page-item-id');

  if (select.selectedIndex === -1) {
    return false;
  }

  return select.options[select.selectedIndex].text != 'Closed'; 
})()

或者,您可以在页面的函数和全局变量声明属性中声明一个函数,然后在 DA 的条件中将其作为表达式调用。