Tutup dialog modal TANPA menyegarkan induknya

Saya perlu menutup formulir khusus saya (yang saya tampilkan dalam dialog modal) dan menghentikan penyegaran situs induk.

Saya memanggil fungsi penutupan saya dari tombol "Batal" khusus saat diklik.

customClose() { 
    //some code here
    window.frameElement.cancelPopUp();
}

<input type="button" value="Cancel" onclick="javascript:customClose()" />

Tetapi jika saya menutup dialog saya dengan cara ini, itu akan menyegarkan situs induk. Bagaimana cara menutupnya tanpa menyegarkan?

P.S. Ini adalah dialog modal SharePoint.

CATATAN: Saya tidak bisa menggunakan jQuery untuk ini, perlu js murni.


person Gintas K    schedule 22.04.2016    source sumber
comment
Versi SharePoint apa yang Anda gunakan?   -  person Thriggle    schedule 22.04.2016
comment
SharePoint Online (2013) @Thriggle   -  person Gintas K    schedule 25.04.2016


Jawaban (1)


SharePoint memiliki beberapa metode bawaan untuk menampilkan dan menutup dialog modal.

Untuk SharePoint 2010, gunakan metode SP.UI.ModalDialog.commonModalDialogClose untuk menutup dialog modal yang terakhir dibuka.

Berikut ini contoh yang menggunakan commonModalDialogClose untuk menutup dialog. Jendela tidak akan disegarkan saat ditutup.

ExecuteOrDelayUntilScriptLoaded(showDialog,"sp.js");
function showDialog(){
    var dialogBody = document.createElement("div");
    var btnClose = document.createElement("button");
    btnClose.value = "Cancel";
    btnClose.innerHTML = "Cancel";
    btnClose.onclick = function(){SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.cancel,null);};
    dialogBody.appendChild(btnClose);
    SP.UI.ModalDialog.showModalDialog(
        {
            html:dialogBody,
            title:"Your Title Here",
            dialogReturnValueCallback:onClose
        }); 
}
function onClose(result,data){
    // this callback function lets you control what happens after the dialog closes
    switch(result){
        case SP.UI.DialogResult.invalid: 
            break;
        case SP.UI.DialogResult.cancel: 
            break;
        case SP.UI.DialogResult.OK: 
            window.location.reload();
            break;
    }
}
person Thriggle    schedule 22.04.2016
comment
Terima kasih! Berhasil. Masalahnya adalah saya punya { location.reload(); } pada dialogReturnValueCallback, sekarang saya menggunakan kode Anda untuk memeriksa panggilan balik dan hanya menyegarkan di OK. - person Gintas K; 25.04.2016