在我的项目中,我有一个显示两个按钮(确认和取消)操作的对话框。但是当出现这种情况时,如果我移动或单击具有与我关联的功能的按钮会导致此错误:
未捕获RangeError:超出最大调用堆栈大小。
这是显示对话框的功能:
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 :(得分:6)
已修复modal: true
上的modal:false
(更好的方法是删除此参数)。
答案 1 :(得分:0)
如果您不想将模式属性设置为false,则可以覆盖对话框模块...
将以下代码添加到脚本文件,一切正常(脚本文件应在“ jquery-ui.js”之后加载)
$.ui.dialog.prototype._createOverlay = function () {
if (!this.options.modal) {
return;
}
var isOpening = true;
this._delay(function () {
isOpening = false;
});
this.overlay = $("<div>")
.addClass("ui-widget-overlay ui-front")
.appendTo(this._appendTo());
this.document.data("ui-dialog-overlays",
(this.document.data("ui-dialog-overlays") || 0) + 1);}