0

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

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

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

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

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

4

1 回答 1

1

在 APEX 中,$x是 的简写引用/指针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 条件中的表达式调用。

于 2020-03-30T15:54:32.710 回答