Apex - 离开页面时清除表单(也在重定向时)

Apex - Clear form when leaving page (also on redirect)

目前,如果我填写表单并离开页面,当我 return 进入表单时,表单条目仍然存在。是否可以阻止这些条目被保存?

使用 PS/SQL 填充项目的默认值,但可以调整内容。

我尝试创建一个动态操作来清除 'Page Unload' 上的项目,但这没有做任何事情。这是正确的浏览器事件,还是我的实现有误?


更新: 提供一些上下文...

页数:

  1. 首页
  2. 表格
  3. DML 表单(插入)- 我希望不存储任何修改

第 3 页可以通过第 1 页或第 2 页访问。

如果用户通过第 2 页(另一种形式)访问表单,他们将选择一个特定值,该值用于填充第 3 页上的默认值(通过项目和 PL/SQL 函数体) .

如果用户通过第 1 页访问表单,相同的 PL/SQL 将 运行 - 这可能导致第 3 页表单项为空(NULL 默认值)。

但是,当用户编辑第 3 页项目(从默认值更改)时,这些值将在用户下次访问表单时保留。如何防止捕获此状态?

你可以用这样的东西来做,但首先你需要添加 jQuery 到你的页面。我建议使用内容分发网络 (CDN)。您可以编辑代码以清除表单类型中的值。希望对您有所帮助!

jQuery CDN example

$(document).ready(function() {
    $("body")
        .find("input").val("")
        .end()
        .find("select").val("-")
        .end()
        .find("textarea").val("");
    };
});

您需要清除页面缓存。这将清除页面上项目的会话状态,从而导致项目再次为空。
您可能需要在多个位置添加此清除。如果您已经使用列链接访问页面、带有重定向的按钮、分支等 The apex URL has a part which states which pages have to be cleared,并且您通常可以声明性地定义页面缓存的清除。

您还可以创建流程,您可以在其中定义必须清除的页面(或页面)。例如,如果你总是希望在进入页面时清除缓存,无论你来自哪里,你都可以在页面上添加一个进程来清除缓存。
会话状态最终是导致此行为的原因:转到页面,更改一些内容,页面出于任何原因被提交并导致会话状态被保存。
通常,在通过向导生成的 DML 表单上,只有在使用来自另一个位置(通常是上层报表)的 "create" 按钮时才会清除缓存。

Here is the (apex 5.0) documentation on session state and managing it.