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

时间:2015-11-04 19:39:07

标签: javascript plsql oracle-apex

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

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

我尝试创建动态操作来清除“页面卸载”中的项目,但这没有做任何事情。这是正确的浏览器事件,还是我的执行错误?

更新:提供一些背景信息......

页数:

  1. 主页
  2. 表格
  3. DML表格(插入) - 我希望不存储任何修改
  4. 第3页可以通过第1页或第2页访问。

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

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

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

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

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

jQuery CDN example

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

答案 2 :(得分:-1)

在我们的起始页上,我们有三个块可以选择要转到的页面。 这些页面中有两个页面的搜索字段在打开时需要为空。 返回页面时,不应显示先前的搜索字符串。 我们使用此查询来显示三个块:

SELECT 'Block 1'                                "CARD_TITLE"
,      'Show data app.1'                        "CARD_TEXT"
,      apex_page.get_url(p_application => 103
                        ,p_page        => 5
                        ,p_clear_cache => 5 )   "CARD_LINK"
,      'fa-search'                              "CARD_ICON"
,       ' '                                     "CARD_SUBTEXT"
,       1                                       disp_seq
FROM dual
UNION

(对块2和3重复)。

参数p_clear_cache确保返回到第5页时其先前的内容被清除。