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>

ドキュメントがロックされている場合にドキュメントのロックを解除し、context.redirectToPageを作成するSSJSの[終了]ボタンがあります。問題は、このボタンがenableModifiedFlagロジックの背後にあるコードをトリガーしていないため、ユーザーが未保存のデータを残したい場合にプロンプ​​トが表示されずにページを離れることです。

CCSJまたはSSJSを使用して、このボタンからenableModifiedFlagの背後にあるコードをトリガーする方法はありますか?

4

2 に答える 2

6

XSP._isDirty()CSJSから使用することにより、フィールドが変更された場合は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 に答える