如何关闭 SP.用户界面.模式对话框从按钮单击在共享点

How to close SP.UI.ModalDialog from button click in sharepoint?

本文关键字:单击 按钮 共享 对话框 何关闭 SP 用户界面 模式      更新时间:2023-09-26

我想在用户从 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);
}

现在我有以下疑问。

  1. SubmitDlg 和 CloseDlg 在单击"提交"或"提交"或"时不会触发取消。
  2. 这是从模式对话框提交表单(提交Dlg方法(和取消对话框(CloseDlg方法(的正确方法吗?
  3. 此外,只有在保存记录时没有验证错误时才应显示此模式对话框,这意味着如果需要任何字段值并且我们没有放置任何值,那么它应该显示内置的红色消息。

谢谢

在模式对话框的选项中,您需要传递对回调函数的引用,如下所示:

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();
});

现在在主页上,您正在调用弹出窗口

function CloseSPUIPopoup{
$(".ms-dlgContent").hide();
}

原因:ms-dlgContent 类位于父页面中,CloseSPPopUp 位于运行时创建的 Iframe 中