ユーザーがEDITForm.aspxからドキュメントを保存するときに、確認ダイアログを表示したい。だから私は次のJavaScriptコードを書きました。
function PreSaveAction() {
var _html = document.createElement();
_html.innerHTML = " <input type=\"button\" value=\"Submit\" onclick ='javascript:SubmitDlg();' /> <input type=\"button\" value=\"Cancel\" onclick =\"javascript:CloseDlg();\" /> </td> </tr> </tbody> </table>";
var options = {
title: "Confirm",
width: 400,
height: 200,
showClose: false,
allowMaximize: false,
autoSize: false,
html: _html
};
SP.UI.ModalDialog.showModalDialog(options);
}
function SubmitDlg() {
SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.OK);
}
function CloseDlg() {
SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.Cancel);
}
今、私は次の質問があります。
ありがとう
モーダルダイアログのオプションで、次のようにコールバック関数への参照を渡す必要があります。
var opt = SP.UI.$create_DialogOptions();
opt.width = 500;
opt.height = 200;
opt.url = url;
opt.dialogReturnValueCallback = MyDialogClosed;
SP.UI.ModalDialog.showModalDialog(opt);
次に、コールバック関数でステータスを確認できます。
function MyDialogClosed(result, value) {
if (result == SP.UI.DialogResult.Cancel) {
//Cancel. Do whatever
}
else { //SP.UI.DialogResult.OK
//User clicked OK. You can pickup whatever was sent back in 'value' }
}
ダイアログから何かを送り返す必要がある場合は、これを使用できます。
function okClicked()
{
SP.UI.ModalDialog.commonModalDialogClose(1, someobject);
}
これを機能させるには、次のようなものを使用して、サーバー側コードの[OK]ボタンに関数を接続する必要があります。
protected override void OnLoad(EventArgs e)
{
if (Master is DialogMaster)
{
var dm = Master as DialogMaster;
if(dm != null) dm.OkButton.Attributes.Add(@"onclick", @"return okClicked();");
}
base.OnLoad(e);
}
クラス「CloseSPPopUp」をbtnに追加します。クリックして閉じます。
このスクリプトを「CloseSPPopUp」btnを持つページに追加します
$('.CloseSPPopUp').click(function(){
window.top.CloseSPUIPopoup();
});
$('.CloseSPPopUp').click(function(){
window.top.CloseSPUIPopoup();
});
今uがポップアップを呼び出しているメインページに
function CloseSPUIPopoup{
$(".ms-dlgContent").hide();
}
理由:ms-dlgContentクラスが親ページにあり、CloseSPPopUpが実行時に作成されるIframeにある