Oracle Apex.Stop 如果有任何未保存的更改,则卸载页面(当单击可导航 link 时)

Oracle Apex.Stop a page unload(when clicked on a navigable link) if there are any unsaved changes

我目前正在使用 oracle apex。我为我的页面创建了一个向导进度列表,列表中的标签作为可导航的链接。但是当用户点击这些链接导航到另一个页面时,我需要询问用户是否确定有未保存的更改,可能使用 apex.message.confirm()。 在共享组件中创建列表时,我通过在列表条目标签中使用 href="my_link" 使其可导航。我知道如果我添加 onClick="my_function();" 我可以直接向那个 link.But 添加功能 在应用程序级别在哪里添加这个 javascript 功能? 我怎么做?有什么想法吗?

注意:我不能在页面级别使用警告未保存的更改选项。因为我通过动态操作(pl/sql 代码)将我页面中的值提交给数据库。因此,即使在单击保存并将数据插入数据库后,当我尝试导航到其他页面时,它也会显示未保存更改的警告。我无法在单击保存按钮时使用提交页面,因为它刷新了整个页面,这是不需要的。

页面属性 -> Navigation -> Warn on Unsaved Changes 设置为 Yes。之后它将自动工作。适用于 APEX 5。

要取消未保存更改的检查,请使用 JavaScript 函数 apex.page.cancelWarnOnUnsavedChanges();。例如,如果您使用 DynamicAction 保存数据,请添加类型为 Execute JavaScript Code 的其他 true 操作并在那里调用它。

通过在列表的共享组件中填写列表条目标签时在提供的名称中使用onClick ="my_function();",您可以定义单击link时需要执行的操作。"my_function" 然后可以在 function and global variable declaration 部分的页面级别声明。 例如:

<a href="#" onClick="my_function('28');">&F300_LABEL_TEXT.</a>

将作为共享组件的列表入口标签! 并在页面级别的 function and global variable declaration 部分中。

    function my_function(page){
        if (apex.page.isChanged() == true)
          {apex.message.alert("there  are unsaved changes"); 
       else{apex.navigation.redirect("f?p="+$v('pFlowId')+":"+page+":"+$v("pInstance")+"::NO");}
                  }