2015-10-18 21 views
2

在我的項目中,我有一個對話框顯示兩個按鈕(確認和取消)。但是,當這似乎,如果我移動或我對與我相關的功能的按鈕單擊導致此錯誤:超過最大調用堆棧大小。在對話框中打開

Uncaught RangeError: Maximum call stack size exceeded.

這是顯示該對話框的功能:

displayConfirmMessageBox: function(title, message, messageButtons) { 
    if(title == undefined || title == ''){ 
     title = "<No message>"; 
    } 
    if(message == undefined || message == ''){ 
     message = "<No message>"; 
    } 
    if(messageButtons == undefined){  
     messageButtons = {}; 
     messageButtons[EALang['close']] = function(){ 
      jQuery("#message_box_confirm").dialog("close"); 
     }; 
    } 

    jQuery("#message_box_confirm").dialog("destroy"); 
    jQuery("#message_box_confirm").remove(); 
    jQuery("body").append(
     "<div id='message_box_confirm' title='" + title + "'>" + 
     "<p>" + message + "</p>" + 
     "</div>" 
    );  

    jQuery("#message_box_confirm").dialog({ 
     autoOpen  : false, 
     modal   : true, 
     resize  : "auto", 
     width   : 400, 
     height  : "auto", 
     resizable  : false, 
     buttons  : messageButtons, 
     closeOnEscape : true 
    }); 

    jQuery("#message_box_confirm").dialog("open"); 
    jQuery(".ui-dialog .ui-dialog-buttonset button").addClass('btn'); 
    jQuery("#message_box_confirm .ui-dialog-titlebar-close").hide(); 
}, 

這是函數調用的displayConfirmMessageBox

var messageButtons = {}; 

messageButtons['OK'] = function(){ 
    conferma = true; 
    BackendCalendar.completeAppointmentStore(conferma, successCallback, errorCallback); 
}; 

messageButtons[EALang['cancel']] = function(){ 
    conferma = false; 
    $('#message_box_confirm').dialog('close'); 
}; 

GeneralFunctions.displayMessageBox(
    EALang['delete_resource_confirmation'], 
    EALang['warning_resource'], 
    messageButtons 
); 

什麼我做錯了嗎?

+0

在你的代碼中似乎沒有任何東西可以拋出這樣的錯誤。這很可能是您的代碼的其他部分。 ([的jsfiddle](http://jsfiddle.net/gz46bpzs/))。你應該尋找一個調用另一個函數的函數,然後再調用另一個函數,等等......直到達到調用堆棧限制。 –

+0

如何查看導致錯誤的原因?因爲我的文件很大2469行! – Dillinger

回答

4

固定與modal: truemodal:false(更好的方法刪除此參數)。

相關問題