如果我在自定义控件上将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后面的代码?
答案 0 :(得分:6)
通过使用来自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;
}
答案 1 :(得分:3)
点击按钮,使用CSJS下方:XSP._setDirty(false,"")
这将使文档变得非脏,并允许用户导航到其他页面。