2017-03-27 6 views
0
function InvokePage() { 
    var layerDlg = $("#Layer").dialog({ 
     position: { my: "top", at: "bottom", of: $("header") }, 
     height: "auto", 
     width: "auto", 
     maxWidth: 400, 
     modal: true, 
     appendTo: "form", 
     resizable: false, 
     open: function(){}, 
     beforeclose: function() 
     { 
      var a = 1; 
     }, 
     close: function() { 
      if (g_changesMade) { 
       //CODE FOR NOT CLOSING POPUP 
       InvokeContinueWithoutSavePopUp(); 
      } 
      else 
      { 
       //CODE FOR CLOSING POPUP 
       $(this).parent().replaceWith(""); 
       layerDlg = null; 
      } 
     } 
    }); 
} 

だから私はポップアップの右上にある 'X'ボタンをクリックすると 'Layer' divを持つJquery DialogのpopUpを開きます。コードがジャンプしますしかし、popUpはすでに閉じていますが、g_changesMade = FALSEの場合はpopUpを閉じたいだけです。JQUERY popUp div、閉じる前に変数をチェック

IF g_changesMadeがTRUEの場合、InvokeContinueWithoutSavePopUp();を開く前に試してみました。しかし、それはまったくその機能に当たっていませんでした。

「X」をクリックしてg_changesMadeの値をチェックし、必要なロジックを実行するときに呼び出される関数を変更することが解決されるでしょうか? どうすれば 'x'これは可能ですか?

+0

試してみるとbeforeCloseでなければならない「クローズ」コールバック関数 – diavolic

+0

beforeCloseは「C」「beforecolse」あなたのコードでは、近くの前に呼び出されていない小文字であるべきですjQueryダイアログの有効な関数は "beforeClose"にする必要があります。この行を試してください "beforeClose:function(){return g_changesMade;}" –

答えて

0

まず、beforecloseというメソッドはありません。これは、大文字Cでfalseを返すために

function InvokePage() { 
    var layerDlg = $("#Layer").dialog({ 
     position: { my: "top", at: "bottom", of: $("header") }, 
     height: "auto", 
     width: "auto", 
     maxWidth: 400, 
     modal: true, 
     appendTo: "form", 
     resizable: false, 
     open: function(){}, 
     beforeClose: function() // <-- capital letter C 
     { 
      var a = 1;     
     }, 
     close: function() { 
      if (g_changesMade) { 
       //CODE FOR NOT CLOSING POPUP 
       InvokeContinueWithoutSavePopUp(); 
      } 
      else 
      { 
       //CODE FOR CLOSING POPUP 
       $(this).parent().replaceWith(""); 
       layerDlg = null; 
      } 
     } 
    }); 
} 
関連する問題