2015-10-18 34 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(更好的方法删除此参数)。

相关问题