【问题标题】:Apex - Clear form when leaving page (also on redirect)Apex - 离开页面时清除表单(也在重定向上)
【发布时间】:2015-11-04 19:39:06
【问题描述】:

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

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

我尝试创建一个动态操作来清除“页面卸载”上的项目,但这并没有做任何事情。这是正确的浏览器事件,还是我只是弄错了实现?


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

页数:

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

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

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

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

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

【问题讨论】:

  • 您能在表单页面上分享更多信息吗?这是什么意思?你如何“回归”它?
  • @Tom 我已经用更多上下文更新了这个问题。

标签: javascript plsql oracle-apex


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    jQuery CDN example

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

    【讨论】:

    • 谢谢,我会试一试的。我假设这将在使用默认值预先填充表单的任何 PS/SQL 之前运行? - 我不知道引入 jQuery 将如何与底层内容交互/冲突,例如我看到apex.jQuery(document).ready(function() 在网上流传。
    • 您可以使用$.noConflict();,但是您需要将您的$ 符号切换为jQuery。示例:$.noConflict(); jQuery(document).ready(function() ...
    • @PidgeyBAWK 您不需要在页面上“引入”jquery,也不必冲突。 Apex 与 jQuery 捆绑在一起,在 4.2 中它使用 jQuery 版本 1.7。除非您有非常具体的用例,否则不应添加其他版本。 apex.jQuery.ready() 的功能也一样。但是,您可以简单地使用带有“页面加载”的动态操作。此外,这个答案实际上并没有涵盖顶点用例。这不是“清除”页面的方法,因为值仍将驻留在会话中。
    • @Tom 如果这不是用例的正确方法,您能否推荐一种从会话中删除表单值的方法?
    • @PidgeyBAWK 我在您的问题上添加了一条评论,要求提供更多详细信息,现在我没有足够的信息来说明您正在做什么或试图实现的目标。
    猜你喜欢
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多