2013-10-11 17 views
6

Chcę wyświetlić okno potwierdzenia, gdy użytkownik zapisuje dowolny dokument z EDITForm.aspx. Napisałem więc poniższy kod JavaScript.Jak zamknąć SP.UI.ModalDialog z kliknięcia przycisku w sharepoint?

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

Teraz mam następujące zapytania.

  1. Funkcja SubmitDlg i CloseDlg nie jest uruchamiana po kliknięciu przycisku Wyślij lub Anuluj.
  2. Czy to właściwy sposób przesyłania formularza (metoda SubmitDlg) i anulowania okna dialogowego (metoda CloseDlg) z okna dialogowego?
  3. Również to modalne okno dialogowe powinno pojawić się tylko wtedy, gdy nie ma błędów sprawdzania poprawności podczas zapisywania rekordu, oznacza, że ​​jeśli wymagana jest jakakolwiek wartość pola, a my nie umieściliśmy żadnej wartości, to powinien on wyświetlać wbudowane komunikaty w kolorze czerwonym.

Dzięki

Odpowiedz

5

w opcji okna modalnego trzeba przekazać referencję do oddzwaniania funkcji tak:

var opt = SP.UI.$create_DialogOptions(); 
opt.width = 500; 
opt.height = 200; 
opt.url = url; 
opt.dialogReturnValueCallback = MyDialogClosed; 

SP.UI.ModalDialog.showModalDialog(opt); 

Następnie w funkcji zwrotnej można sprawdzić status:

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' } 

}

Jeśli trzeba wysyłać rzeczy z powrotem ze swojego okna można użyć to:

function okClicked() 
{ 
    SP.UI.ModalDialog.commonModalDialogClose(1, someobject); 
} 

Do tej pracy trzeba by podpiąć się funkcję do przycisku OK na serwerze kodu po stronie za pomocą czegoś takiego :

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); 
    } 
+0

Moja dialogowe modalne tylko pokazując ikonę poprzeczny nie jest ok i przycisk anulowania :( – nbi

0

add class "CloseSPPopUp" do bTN u chcą kliknij aby zamknąć

Dodaj ten skrypt do strony, która ma "CloseSPPopUp" bTN

$('.CloseSPPopUp').click(function(){    
window.top.CloseSPUIPopoup();  
}); 

$('.CloseSPPopUp').click(function(){ 
window.top.CloseSPUIPopoup(); 
}); 

Teraz na stronie głównej, gdzie u wzywają popup

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

Powód: klasy ms-dlgContent jest w nadrzędnej & CloseSPPopUp jest w iframe, który jest tworzony w czasie wykonywania

Powiązane problemy