根据 APEX 中的多个项目值隐藏按钮

问题描述 投票:0回答:1

我试图根据 5 个页面项目的空值检查来隐藏按钮。

我首先在页面加载时隐藏按钮,然后使用 DA 在所有字段都不为空时显示它。

我的按钮静态 ID 是

create_btn
,位于名为
buttons

的区域

这是我的 JavaScript 表达式。

function checkFields() {
  const field1 = apex.item("P4_NAME_MAIL").getValue();
  const field2 = apex.item("P4_ADDRESS_MAIL").getValue();
  const field3 = apex.item("P4_CITY_MAIL").getValue();
  const field4 = apex.item("P4_STATE_MAIL").getValue();
  const field5 = apex.item("P4_ZIP_MAIL").getValue();

  const buttonItem = apex.region("buttons").getItem("create_btn");

  if (field1 && field2 && field3 && field4 && field5) {
    // All fields are not null, show the button
    if (buttonItem) {
      buttonItem.show();
      buttonItem.setLabel("Submit");
    }
  } else {
    // One or more fields are null, hide the button
    if (buttonItem) {
      buttonItem.hide();
    }
  }
}

但是当我测试这个时,按钮从未显示? 感谢您的帮助。

Oracle APEX 24.1.1

oracle-apex
1个回答
0
投票

这可以在 DA 中完成,无需任何 JavaScript 编码。在我的例子中只有 2 个项目,但你明白了

动态动作:

enter image description here

添加“隐藏”>“按钮”的真动作和“显示”>“按钮”的假动作

除了“更改”事件,您还可以查看“失去焦点”。

我不会使用操作的“初始化时触发”属性来显示或隐藏页面加载时的按钮。相反,在按钮上添加一个样式指令以默认隐藏,然后让 DA 在需要时显示它。这可以防止负载闪烁。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.