4

如果我在自定义控件上将 enableModifiedFlag 属性设置为 true;我在生成的页面源代码的底部看到以下代码。

当用户离开更改的页面时,一切正常;他们收到“未保存的数据”的警报消息

<script type="text/javascript"> 

function view__id1__id2__id95__id98__id105_clientSide_onclick(thisEvent) {
return validateForm();

}

XSP.attachDirtyUnloadListener("This document may contain unsaved changes.");

XSP.addOnLoad(function() {
XSP.attachEvent("view:_id1:saveActionEventHandler", "view:_id1", "ondirtysave", null, true, 2);
XSP.attachEvent("view:_id1:_id2:_id95:_id98:_id105", "view:_id1:_id2:_id95:_id98:link1", "onclick", view__id1__id2__id95__id98__id105_clientSide_onclick, true, 2);
XSP.attachEvent("view:_id1:_id2:_id95:_id98:_id106", "view:_id1:_id2:_id95:_id98:link2", "onclick", null, true, 2);
XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:businessName11");

XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:businessName21");

XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:address11");

XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:address21");

XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:city1");

XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:cbState");

XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:zipCode1");

XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:phoneNumber1");

}); 

</script>

我有一个带有 SSJS 的退出按钮,如果文档被锁定,它会解锁并生成 context.redirectToPage。问题是这个按钮没有触发 enableModifiedFlag 逻辑后面的代码,因此用户离开页面时不会被提示是否要离开未保存的数据。

有没有办法使用 CCSJ 或 SSJS 从这个按钮触发 enableModifiedFlag 后面的代码?

4

2 回答 2

6

通过使用from CSJS,如果任何字段被修改,XSP._isDirty()您可以获得true ,如果没有对表单进行任何更改,则可以获得false 。

所以我将这段代码添加到我在 CSJS 下的按钮中,以显示来自 XPages 的相同默认警报:

if (XSP._isDirty()){
    if (confirm ("Are you sure you want to navigate away from this page?" + "\n" + "\n" +
    "This document may contain unsaved changes." + "\n" + "\n" +
    "Press OK to continue, or Cancel to stay on the current page.")){
        return true;
    }else{
        return false;
    }
} else {
    return true;
}
于 2012-05-03T09:44:45.010 回答
3

单击按钮后,在 CSJS 下方使用:XSP._setDirty(false,"") 这将使文档不脏,并让用户导航到其他页面。

于 2012-05-02T17:38:23.010 回答